【问题标题】:Problem connection with local mongodb from nodejs: [Symbol(mongoErrorContextSymbol)]从 nodejs 与本地 mongodb 的连接问题:[Symbol(mongoErrorContextSymbol)]
【发布时间】:2019-06-01 06:38:32
【问题描述】:

我正在创建 nodejs 服务器并将其连接到 EC2 实例上的本地 mongodb。连接mongodb出错。

我在本地机器上试过了,运行良好。我已经尝试成功使用 MongoAtlas。但是当尝试在 EC2 实例上时,它会显示错误消息:

telegram-bot-02@0.0.0 开始 /home/ec2-user/workspace/rep01 节点./bin/www

mongdb://127.0.0.1:27017/telegram MongoDb 连接错误 { MongoParseError: Invalid connection string 在 parseConnectionString (/home/ec2-user/workspace/rep01/node_modules/mongodb-core/lib/uri_parser.js:412:21) 在连接处(/home/ec2-user/workspace/rep01/node_modules/mongodb/lib/operations/mongo_client_ops.js:180:3) 在 connectOp (/home/ec2-user/workspace/rep01/node_modules/mongodb/lib/operations/mongo_client_ops.js:284:3) 在执行操作(/home/ec2-user/workspace/rep01/node_modules/mongodb/lib/utils.js:420:24) 在 MongoClient.connect (/home/ec2-user/workspace/rep01/node_modules/mongodb/lib/mongo_client.js:168:10) 在 Promise (/home/ec2-user/workspace/rep01/node_modules/mongoose/lib/connection.js:521:12) 在新的承诺 () 在 NativeConnection.Connection.openUri (/home/ec2-user/workspace/rep01/node_modules/mongoose/lib/connection.js:518:19) 在 Mongoose.connect (/home/ec2-user/workspace/rep01/node_modules/mongoose/lib/index.js:270:15) 在对象。 (/home/ec2-user/workspace/rep01/app.js:16:10) 在 Module._compile (internal/modules/cjs/loader.js:689:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10) 在 Module.load (internal/modules/cjs/loader.js:599:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:538:12) 在 Function.Module._load (internal/modules/cjs/loader.js:530:3) 在 Module.require (internal/modules/cjs/loader.js:637:17) 名称:'MongoParseError', [符号(mongoErrorContextSymbol)]:{}}

我尝试重新安装 mongodb,但无法正常工作。 MongoDB版本为v4.0.5 请帮我解决一下这个。谢谢!

【问题讨论】:

  • 您能否在连接字符串中添加代码以及出现此错误,我只能告诉您您为连接提供的哪个连接字符串无效意味着 mongo 没有运行
  • 我使用了 'mongo' 并且它有效。这是代码:const mongoose = require("mongoose"); const mongoDb = process.env.MONGODB_URI; mongoose.connect( mongoDb, { useNewUrlParser: true } ); mongoose.Promise = global.Promise; const db = mongoose.connection; db.on("error", console.error.bind(console, "MongoDb connection error"));。连接字符串:“mongodb://localhost:27017/telegram”

标签: node.js mongodb mongoose


【解决方案1】:

您可以按照此link 获取将 node.js 与 MongoDB 连接的说明。

例子是

//with using the promise
mongoose.connect(uri,options).then(() => {
  //connection established successfully
}).catch(error){
  //catch any error during the initial connection
}

【讨论】:

  • 链接答案并不理想,如果链接更改,则答案不再相关。如果提供链接,最好将任何含义细节复制到您的答案中。
【解决方案2】:

试试这个,这对我有用,我得到了同样的错误,因为我试图以错误的方式连接。 我之前产生“'MongoParseError', [Symbol(mongoErrorContextSymbol)]: {} }” 错误的代码是 -

mongoose.connect('mongodb://localhost/27017/creative-ideas', { useNewUrlParser: true })
    .then(() => console.log("Mongodb connected"))
    .catch(err => console.log(err));

更正后的代码是:

mongoose.connect('mongodb://localhost:27017/creative_ideas', { useNewUrlParser: true })
    .then(() => console.log("Mongodb connected"))
    .catch(err => console.log(err));

【讨论】:

    【解决方案3】:

    DeprecationWarning:当前的服务器发现和监控引擎 已弃用,并将在未来的版本中删除。使用新的服务器 Di 发现和监控引擎,将选项 { useUnifiedTopology: true } 传递给 Mo ngoClient 构造函数。

    所以正确的代码是

    mongoose.connect('mongodb://localhost:27017/usercrud', { useNewUrlParser: true, useUnifiedTopology: true  })
    .then(() => console.log("Mongodb connected"))
    .catch(err => console.log(err));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2018-12-07
      • 2016-12-05
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2015-05-31
      相关资源
      最近更新 更多