How to construct a Promise wrapper for MongoClient methods i



我正在尝试将各种mongoDB方法包装在node.js服务器的承诺包装中,但我正在获取

TypeError: Promise is not a constructor

新的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

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

另外,您的测试应为:

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

因为checkURL现在是一个承诺。

@titus回答了我的问题。我正在改编GURU99上的教程,他们需要该包来使用承诺,但是仅删除该行可以使一切工作。谢谢!

最新更新