node.js - Mongoose 在docker中连接到mongo

标签 node.js mongodb docker mongoose

我正在尝试从也在docker中运行的nodejs连接到docker中的mongo。这是我的配置。它出什么问题了?

docker 组成

  version: '3'

  networks:
    velocity:

  services:
    mongo-main-gate:
      image: mongo
      volumes:
        - ./mongo:/data/db
      networks:
        - velocity

    main-gate:
      build: .
      environment:
        - PORT=${PORT}
        - PROD=${PROD}
        - HOST=${HOST}
        - MONGO_URI=${MONGO_URI}
        - RPC_NODE_URL=${RPC_NODE_URL}
      ports:
        - ${EXT_PORT}:${PORT}
      depends_on:
        - mongo-main-gate
      networks:
        - velocity

.env
PORT=3000
PROD="true"
HOST=0.0.0.0
MONGO_URI="mongodb://mongo-main-gate:27017/maingate"
EXT_PORT=8080
RPC_NODE_URL="https://node.funcoin.io"

连接功能
const mongoose = require('mongoose');

const callback = (err) => {
  if (err) {
    console.log(err.message);
  } else {
    console.log('Succesfully Connected!');
  }
};

const init = () => {
  mongoose.Promise = global.Promise;
  console.info('INIT', process.env.MONGO_URI)
  mongoose.connect(
    process.env.MONGO_URI || 'mongodb://localhost:27017/maingate',
    { useCreateIndex: true, useNewUrlParser: true },
    callback
  );
};

module.exports = {
  init,
  callback,
};

容器返回成功连接!

但是当尝试添加用户时,我收到
main-gate_1        | {"level":50,"time":1587804410796,"pid":1,"hostname":"a1aad352ee4f","reqId":"cc655a95-45fb-4328-9e27-99283a393852","req":{"method":"GET","url":"/generate/mocks","hostname":"0.0.0.0:8080","remoteAddress":"172.24.0.1","remotePort":43686},"res":{"statusCode":500},"err":{"type":"MongoError","message":"Invalid namespace specified 'maingate\".users'","stack":"MongoError: Invalid namespace specified 'maingate\".users'\n    at Connection.<anonymous> (/usr/src/app/node_modules/mongodb/lib/core/connection/pool.js:450:61)\n    at Connection.emit (events.js:198:13)\n    at processMessage (/usr/src/app/node_modules/mongodb/lib/core/connection/connection.js:384:10)\n    at Socket.<anonymous> (/usr/src/app/node_modules/mongodb/lib/core/connection/connection.js:553:15)\n    at Socket.emit (events.js:198:13)\n    at addChunk (_stream_readable.js:288:12)\n    at readableAddChunk (_stream_readable.js:269:11)\n    at Socket.Readable.push (_stream_readable.js:224:10)\n    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)","ok":0,"errmsg":"Invalid namespace specified 'maingate\".users'","code":73,"codeName":"InvalidNamespace","name":"MongoError"},"msg":"Invalid namespace specified 'maingate\".users'","v":1}

最佳答案

您可能会奇怪地引用了您的应用程序正在生成的信息。看起来与docker没有关系。

关于node.js - Mongoose 在docker中连接到mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61423183/

相关文章:

javascript - 依赖的函数数组可以用bluebird的reduce方法解决吗?

java - 连接到 MongoDB Atlas : com. mongodb.MongoCommandException: Command failed with error 8000

mongodb - 在mongoDB中保存IP地址

ssl - 带有外部证书的 Docker Datacenter : Error x509 certificate signed by unknown authority UCP 2. 0.0 和 DTR 2.1.0

reactjs - Docker 与子目录组合并实时重新加载

node.js - Mongoose 模型 $in 查询不起作用

javascript - 服务器在某些路由上抛出 500 错误

MongoDB 设计/重构

selenium - 为什么此行必须与Selenium和Docker Swarm一起使用?

node.js - 无法使用 n 更改 nodejs 版本