[英]Failing to connect to MongoDB hosted on mlab
制作一个小型Web应用程序,以连接到Mlab托管的Mongo DB。 我已经在mlab上创建了数据库,并创建了具有读/写权限的用户。 我还创建了一个包含多个记录的users
集合。
当我尝试使用mongo.github.io上的代码连接到数据库时,出现以下错误:
/home/ed/dev/mongo-demo/node_modules/mongodb/lib/operations/mongo_client_ops.js:466
throw err;
^
TypeError: Cannot read property 'db' of null
var MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://<user>:<pass>@ds115434.mlab.com:15434';
// Database Name
const dbName = 'princee3-music';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
console.log("Connected successfully to server");
const db = client.db(dbName);
client.close();
});
奇怪的是,如果我使用以下命令通过外壳连接:
mongo ds115434.mlab.com:15434/princee3-music -u <dbuser> -p <dbpassword>
效果很好,或者如果我将连接包装在匿名的自调用异步函数中,它也会连接。
const MongoClient = require('mongodb').MongoClient;
const mongoUrl = 'mongodb://<user>:<pass>@ds115434.mlab.com:15434/';
const dbName = 'princee3-music';
(async() => {
const client = await MongoClient.connect(mongoUrl, { useNewUrlParser: true});
const db = client.db(dbName);
db.collection('users').insertOne({
email: user.email,
pass: hashedPassword,
admin: true
}, (err, result) => {
if (err) {
reject({error: err});
} else {
resolve({message: 'okay'});
}
});
client.close();
})();
任何有关我可能会出错的地方的建议都将是很棒的。
官方mLab文档建议如下进行连接。 它必须是异步的,以等待连接发生,否则客户端将为null,从而引发错误,表明它无法读取null的属性db。
另一方面,您异步具有useNewUrlParser
,这可能是成功建立连接的关键,请参见此问题
MongoClient.connect(url, { useNewUrlParser: true }).then(client => client.db())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.