![](/img/trans.png)
[英]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.