MongoDB在承诺中包含mongo实例

时间:2018-05-08 18:24:13

标签: javascript node.js mongodb express

在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不是函数

问题:

我做错了什么,如何让它发挥作用?

1 个答案:

答案 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
  });