MongoDB обернуть экземпляр Монго в обещание - PullRequest
0 голосов
/ 08 мая 2018

Работая над веб-приложением, я хочу одноэлементное соединение MongoDB, которое можно использовать в разных модулях. Я делаю это с использованием обещаний. До сих пор я пробовал следующее:

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 голосов
/ 08 мая 2018

Вы делаете две вещи неправильно


Сначала вы должны включить свои возвраты в обратный вызов подключения.

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
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...