我一直在使用Node.js使用异步等待从我的MongoDB服务器中提取一些数据。该代码一直在Node环境中工作,在该环境中,我一直在向控制台输出查询结果。现在,我正在将代码迁移到React进行可视化。但是,当我移动节点时,得到的错误“拒绝”未定义。我可能在做一个基本的错误,也许我需要导入一个模块?
async componentWillMount(){
var result = await this.getMongoData("mydb", url);
}
getMongoData(dboArg, urlArg) {
return new Promise(resolve => {
MongoClient.connect(urlArg, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db(dboArg);
dbo.collection(myCollection).find({}).toArray(function(err, data) {
db.close();
err
? reject(err)
: resolve(data);
});
})
})
}
答案 0 :(得分:2)
您需要在承诺中将拒绝作为参数。
详细了解承诺here
async componentWillMount(){
var result = await this.getMongoData("mydb", url);
}
getMongoData(dboArg, urlArg) {
return new Promise((resolve, reject) => {
MongoClient.connect(urlArg, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db(dboArg);
dbo.collection(myCollection).find({}).toArray(function(err, data) {
db.close();
err
? reject(err)
: resolve(data);
});
})
})
}
答案 1 :(得分:2)
您必须像这样将promise函数的参数指定为拒绝处理程序:
return new Promise((resolve, reject)=> {
// do stuff
})