我正在尝试将各种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
答案 0 :(得分:0)
@Titus回答了我的问题。我正在改编有关Guru99的教程,他们需要该软件包才能使用Promise,但是仅删除该行即可使所有工作正常。谢谢!
答案 1 :(得分:0)
您不需要require("promise")
,这没有任何意义。因此可能会失败。
此外,您的测试应该是:
checkURL("www.stackoverflow.com", "/")
.then(result => {
console.log(result);
});
因为checkURL
是现在的承诺。