首页 > 解决方案 > 连接到 MongoDb Atlas 服务器时出错

问题描述

所以我目前正在编写一个 Web 应用程序,我需要数据库,所以我决定使用 mongodb 和 mongoose。到目前为止,我在 localhost 上测试了所有内容并且它有效,但我想将数据移动到服务器。

我想通过 node.js 应用程序连接到集群。

mongoose.connect(`mongodb+srv://${process.env.MONGO_ADMIN}:${process.env.MONGO_PASSWORD}
@secret-cluster.thdxy.mongodb.net/userDB?retryWrites=true&w=majority`,
{useNewUrlParser:true, useUnifiedTopology: true,useCreateIndex: true});

那是错误信息:

(node:25236) UnhandledPromiseRejectionWarning: MongoParseError: Invalid connection string
    at parseConnectionString (W:\web development udemy\Secrets\node_modules\mongodb\lib\core\uri_parser.js:565:21)
    at connect (W:\web development udemy\Secrets\node_modules\mongodb\lib\operations\connect.js:282:3)
    at W:\web development udemy\Secrets\node_modules\mongodb\lib\mongo_client.js:223:5
    at maybePromise (W:\web development udemy\Secrets\node_modules\mongodb\lib\utils.js:662:3)
    at MongoClient.connect (W:\web development udemy\Secrets\node_modules\mongodb\lib\mongo_client.js:219:10)   
    at W:\web development udemy\Secrets\node_modules\mongoose\lib\connection.js:788:12
    at new Promise (<anonymous>)
    at NativeConnection.Connection.openUri (W:\web development udemy\Secrets\node_modules\mongoose\lib\connection.js:785:19)
    at Mongoose.connect (W:\web development udemy\Secrets\node_modules\mongoose\lib\index.js:339:15)
    at Object.<anonymous> (W:\web development udemy\Secrets\app.js:28:10)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47
(node:25236) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
(node:25236) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

标签: node.jsmongodbmongoose

解决方案


mongoose.Promise = global.Promise;
const uri = `mongodb+srv://${process.env.MONGO_ADMIN}:${process.env.MONGO_PASSWORD}@secret-cluster.thdxy.mongodb.net/userDB?retryWrites=true&w=majority`;

mongoose.connect(uri, {
  useCreateIndex: true,
   useNewUrlParser:true
  }).then(()=> console.log('mongoDb conected..!!'))
   .catch(err=> console.log(err));

推荐阅读