如何在Node.js中为MongoClient方法构造Promise包装器

时间:2019-05-25 19:57:41

标签: javascript node.js mongodb

我正在尝试将各种MongoDB方法包装在Node.js服务器的Promise包装器中,但是我得到了

TypeError: Promise is not a constructor

新的Promise构造函数包装器中的所有代码都可以正常工作,但是我需要在异步Promise中使用它,以便从另一个地方调用它。

const MongoClient = require("mongodb").MongoClient;
const Promise = require("promise");
const mongoURL = "...";

function checkURL (domain, path) {
return new Promise(function (resolve, reject) {
    const client = new MongoClient(mongoURL, { useNewUrlParser: true });

    client.connect()
    .then(db => {
        const collection = client.db("websites").collection("cool_websites");
        return collection.find({domain: domain, path: path}).toArray();
    })
    .then(result => {
        resolve(result);
        client.close();
    })
})
}

console.log(checkURL("www.stackoverflow.com", "/"));

我希望

的console.log
[ { _id: 123abc,
    domain: 'www.stackoverflow.com',
    path: '/questions/',
    cool_website: true } ] 

但是在终端中,我只是收到:

TypeError: Promise is not a constructor

2 个答案:

答案 0 :(得分:0)

@Titus回答了我的问题。我正在改编有关Guru99的教程,他们需要该软件包才能使用Promise,但是仅删除该行即可使所有工作正常。谢谢!

答案 1 :(得分:0)

您不需要require("promise"),这没有任何意义。因此可能会失败。

此外,您的测试应该是:

checkURL("www.stackoverflow.com", "/")
  .then(result => {
    console.log(result);
  });

因为checkURL是现在的承诺。