[英]How to get the connected objects within a collection in an array in Mongoose MongoDb NodeJS
[英]How can I get a nodejs server running under docker get connected by mongoose to mongodb?
我正在努力尝试通过 mongoose 将我的 nodejs 服务器(在 docker 容器中运行)连接到 mongodb
server.js:
import * as express from 'express';
import { Request, Response } from 'express';
import { encode } from 'jwt-simple';
import * as bcrypt from 'bcrypt';
import { connect } from 'mongoose';
import { UserModel, User } from './models';
const app: express.Application = express();
const PORT = 3333;
app.use(express.json());
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
next();
});
// some code here
connect(`mongodb://0.0.0.0:27017/user-db`, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => {
console.log('successfully connected to the database');
})
.catch(err => {
console.log('error connecting to the database');
process.exit();
});
app.listen(PORT, () => {
console.log(`Server is listening at port - ${PORT}`);
});
然后我有两个图像,一个用于服务器,一个用于 mongodb,在运行 mongodb 图像后,我运行服务器一个,它得到服务(已经从.ts 编译)到 Z05B6053C41A2130AFDZ6FC3B158BDA4E6
1 docker run -it --name server -p 3333:3333 my:server sh
然后在“服务器”容器中运行:
2 node server.js
服务器路由工作正常,但几秒钟后mongoose.connect
陷入困境
您有两个选项可以连接 Mongo DB 容器。
对于第一个选项,您可以将Host IP
作为环境变量传递给您的 nodejs 容器,因为0.0.0.0
表示 @David 提到的所有接口在这种情况下都不起作用。 进行以下更改
// set some default value if ENV is not set
const mongo_host=process.env.MONGO_HOST || "localhost"
connect(mongo_host, {
useNewUrlParser: true,
useUnifiedTopology: true
})
然后运行容器并通过Mongo Host IP
docker run -it -e MONGO_HOST=192.168.x.x --name server -p 3333:3333 my:server sh
或者如果主机是 Mac 或 window 你也使用特殊的 DNS host.docker.internal
connect('host.docker.internal', {
useNewUrlParser: true,
useUnifiedTopology: true
})
version: "3"
services:
app:
container_name: nodejs-mongo
image: nodejs_app
environment:
- MONGO_HOST=mongo
ports:
- "3000:3000"
depends_on:
- mongo
mongo:
container_name: mongo
image: mongo
ports:
- "27017:27017"
在这种情况下,我们通过MONGO_HOST=mongo
,其中 docker 可以解决此问题,以便与同一网络中的 Mongo 容器连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.