Node.js 连接到MongoDb Atlas服务器时出错

Node.js 连接到MongoDb Atlas服务器时出错,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,所以我目前正在编写一个web应用程序,我需要数据库,所以我决定使用mongodb和mongoose。直到现在,我在localhost上测试了所有的东西,它工作正常,但我想将数据移动到服务器上 我想通过node.js应用程序连接到集群 mongoose.connect(`mongodb+srv://${process.env.MONGO_ADMIN}:${process.env.MONGO_PASSWORD} @secret-cluster.thdxy.mongodb.net/userDB?ret

所以我目前正在编写一个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.
(节点:25236)未处理的PromisejectionWarning:MongoParserError:连接字符串无效
在parseConnectionString(W:\web development udemy\Secrets\node\u modules\mongodb\lib\core\uri\u parser.js:565:21)
连接时(W:\web development udemy\Secrets\node\u modules\mongodb\lib\operations\connect.js:282:3)
在W:\web development udemy\Secrets\node\u modules\mongodb\lib\mongo\u client.js:223:5
在maybePromise(W:\web development udemy\Secrets\node\u modules\mongodb\lib\utils.js:662:3)
在MongoClient.connect(W:\web development udemy\Secrets\node\u modules\mongodb\lib\mongo\u client.js:219:10)
在W:\web development udemy\Secrets\node\u modules\mongoose\lib\connection.js:788:12
在新的承诺()
在NativeConnection.Connection.openUri(W:\web development udemy\Secrets\node\u modules\mongoose\lib\Connection.js:785:19)
在Mongoose.connect(W:\web development udemy\Secrets\node\u modules\Mongoose\lib\index.js:339:15)
反对。(W:\web development udemy\Secrets\app.js:28:10)
at模块编译(内部/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:1157:10)
在Module.load(内部/modules/cjs/loader.js:985:32)
at Function.Module._load(内部/modules/cjs/loader.js:878:14)
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:71:12)
在internal/main/run_main_module.js:17:47
(节点:25236)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志“---unhandled rejections=strict”(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (拒绝id:3)
(节点:25236)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

我建议您在整个代码中使用此字符->(')来包围字符串值,而不是使用此字符->(`

使用多种类型的代码可能会导致代码中出现一些错误,就像我在我的代码中注意到的那样

或者简单地使用双标记->()来防止由于它们的相似性而产生任何错误

无论如何,我在控制台中使用node.jsmongodb 4.4.2版时遇到了同样的错误问题,直到我注意到我使用的是“+srv/”而不是“+srv:/”,所以如果我可以给你一些建议:你可以通过重新组织代码来解决很多错误。因此,你可以解决重写的问题(或复制和粘贴)您的代码如下所示,因为这可能会防止由于字符错误或类似的错误,就像我所做的那样:

// --- creating data for link and functions--- 

const port = 5000;
const myUser = 'userString';
const myPassword = 'passString';
const dataBaseName = 'yourDatabase';
const clusterInfo = 'yourClusterInfoGoesHere';

//----- creating url link ------ //CHECK YOUR MONGO VERSION FOR DETAILS ABOUT URL, mine is 4
// you can check your mongo version my tipying the line 'mongo -version' in your cmd

const url_databaseAcess =
'mongodb+srv://'
+myUser
+':'
+myPassword
+'@'
+clusterInfo
+'.mongodb.net/'
+dataBaseName
+'?retryWrites=true&w=majority';

// ----- handling connection ------

var db = mongoose.connection; //creating connection
db.on('error', console.error); //error log...
db.once('open', function() { console.log('sucess! connection created'); });
mongoose.connect(url_databaseAcess, { useNewUrlParser:true, useUnifiedTopology: true, useCreateIndex: true });
app.listen(port, function () {console.log('CONNECTED!!!'; });

我建议您在整个代码中使用此字符->(
来包围字符串值,而不是使用此字符->(`

使用多种类型的代码可能会导致代码中出现一些错误,就像我在我的代码中注意到的那样

或者简单地使用双标记->()来防止由于它们的相似性而产生任何错误

无论如何,我在控制台中使用node.jsmongodb 4.4.2版时遇到了同样的错误问题,直到我注意到我使用的是“+srv/”而不是“+srv:/”,所以如果我可以给你一些建议:你可以通过重新组织代码来解决很多错误。因此,你可以解决重写的问题(或复制和粘贴)您的代码如下所示,因为这可能会防止由于字符错误或类似的错误,就像我所做的那样:

// --- creating data for link and functions--- 

const port = 5000;
const myUser = 'userString';
const myPassword = 'passString';
const dataBaseName = 'yourDatabase';
const clusterInfo = 'yourClusterInfoGoesHere';

//----- creating url link ------ //CHECK YOUR MONGO VERSION FOR DETAILS ABOUT URL, mine is 4
// you can check your mongo version my tipying the line 'mongo -version' in your cmd

const url_databaseAcess =
'mongodb+srv://'
+myUser
+':'
+myPassword
+'@'
+clusterInfo
+'.mongodb.net/'
+dataBaseName
+'?retryWrites=true&w=majority';

// ----- handling connection ------

var db = mongoose.connection; //creating connection
db.on('error', console.error); //error log...
db.once('open', function() { console.log('sucess! connection created'); });
mongoose.connect(url_databaseAcess, { useNewUrlParser:true, useUnifiedTopology: true, useCreateIndex: true });
app.listen(port, function () {console.log('CONNECTED!!!'; });

只是为了测试,如果你硬编码${process.env.MONGO_ADMIN}:${process.env.MONGO_PASSWORD}部分,你会得到同样的错误?只是为了测试,如果你硬编码${process.env.MONGO_ADMIN}:${process.env.MONGO_PASSWORD}部分,你会得到同样的错误吗?