在Web应用程序上工作我想要一个可以在不同模块中重用的MongoDB单例连接。我使用promises来做到这一点。到目前为止我尝试了以下内容:
Server.js
module.exports = new Promise ((res, rej) => {
let MongoDB;
MongoClient.connect('mongodb://localhost:27017/WIGAMEX',{poolSize: 30}, function(err, db) {
// console.log(db);
MongoDB = db;
});
if(MongoDB) {
res(db);
}
rej('no DB');
});
第1单元
const server = require('../server.js');
server.then( (db) => {console.log(db) });
现在说:
TypeError:server.then不是函数
我做错了什么,如何让它发挥作用?
答案 0 :(得分:2)
你做错了两件事
首先,您应该将您的回报包含在connect回调中。
module.exports = new Promise ((res, rej) => {
MongoClient.connect('mongodb://localhost:27017/WIGAMEX',{
poolSize: 30,
}, function(err, db) {
if (err) {
return rej(err);
}
return res(db);
});
});
您要返回的是Promise函数,您必须先调用它才能解决它
const server = require('../server.js');
server()
.then((db) => {
console.log(db)
})
.catch((err) => {
// treat error
});