首页 > 解决方案 > 如何在 nodejs 应用程序中连接到 mongoDs-Atlas?

问题描述

我正在尝试从我的 node.js 应用程序连接到我的 mongoDb-Atlas

这是我的代码:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const url = 'mongodb://username:<password>@cluster0-shard-00-00-afixn.mongodb.net:27017,cluster0-shard-00-01-afixn.mongodb.net:27017,cluster0-shard-00-02-afixn.mongodb.net:27017/Yarden?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true';
const client = new MongoClient(url);
client.connect(function(err) {
  assert.equal(null, err);
  console.log("Connected successfully to server");
  client.close();
});

我得到的错误:

25) 在执行操作 (/Users/admin/Desktop/node/node_modules/mongodb/lib/utils.js:418:7) 在 MongoClient.connect (/Users/admin/Desktop/node/node_modules/mongodb/lib/mongo_client. js:175:10) 在对象。(/Users/admin/Desktop/node/index.js:63:8) 在 Module._compile (internal/modules/cjs/loader.js:707:30) 在 Object.Module._extensions..js (internal/modules /cjs/loader.js:718:10) 在 Module.load (internal/modules/cjs/loader.js:605:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:544:12)

我尝试过多次更改密码,它不包含任何特殊字符。

标签: node.jsmongodbmongodb-atlas

解决方案


您的密码在 URL 上包含一些不允许的字符 尝试使用 uri_decode_auth: true

mongoClient.connect("mongodb://username:p%40ssword@host:port/dbname", { 
    uri_decode_auth: true 
    }, function(err, db) {

    }
);

或者像这样:

const dbUrl = `mongodb://username:${encodeURIComponent('@Password')}@localhost:27017/mydb`;

推荐阅读