我无法将我的应用程序连接到Mongo Atlas

时间:2019-08-27 02:37:57

标签: javascript node.js mongodb express

我正在遵循文档,并根据阅读的内容正确执行。我正在连接到我的Mongo Atlas服务器。服务器已连接,我能够连接到DBCollection。但是DBCollection并未传递给db object

我尝试用控制台记录值,并重构了逻辑,但仍然没有解决方案。

// MongoDB Connection Setup
let db = {};
let MongoClient = require("mongodb").MongoClient;

let uri = process.env.MONGODB_CONNECT_URL;
let client = new MongoClient(uri, { useNewUrlParser: true });

client.connect(err => {
  assert.strictEqual(null, err);
  console.log('Connected Successfully to MongoDB!');

  db.client = client.db("cosmosdb");
  db.collection = client.db('cosmosdb').collection('cosmos');

  console.log("Database Values: ", db) // This actually returns values

  return db;
});

console.log('Database: ', db); // Not returning values

app.set('port', process.env.PORT || 3000);

let server = app.listen(app.get('port'), () => {
  console.log(`Express server listening on port: `, server.address().port)
});

server.db = db;

当我console.log db时,我希望看到

Database: {
 client: // values
 collection: // values
}

这就是我要回来的东西

Database: {}

2 个答案:

答案 0 :(得分:0)

已编辑

您的uri是否按以下方式分配? (mongodb+srv

let uri = `mongodb+srv://${dbUser}:${dbPwd}@${dbHost}/test?retryWrites=true`;

let client = new MongoClient(uri, { useNewUrlParser: true });

答案 1 :(得分:0)

connect()调用中缺少一个参数,您有“ err”,但是应该是(err,client)。所以对我来说,如下所示:

var db = {};
var MongoClient = require('mongodb').MongoClient;

//Use connect method to connect to the Server
MongoClient.connect(process.env.MONGODB_CONNECT_URL, { useNewUrlParser: true }, function (err, client) {
  assert.equal(null, err);
  db.client = client;
  db.collection = client.db('newswatcherdb').collection('newswatcher');
  console.log("Connected to MongoDB server");
});