我正在尝试将各种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上的教程,他们需要该包来使用承诺,但是仅删除该行可以使一切工作。谢谢!