我有一个动态的情况,用户将发布一个数据数组,我需要在不同的行中插入数据库 . 如何在将成功或失败返回给用户之前等待回叫完成 .
我尝试使用promise,但它返回了这个
UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):TypeError:无法读取未定义的属性'Symbol(Symbol.iterator)'(节点:6216)弃用警告:不推荐使用未处理的承诺拒绝 . 将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程 .
我的承诺
req.targetting.forEach(data => {
let s = {};
if (data.value == '' || data.value.length == 0) {
s = 99;
} else {
s = data.status;
}
let promises = new Promise((resolve, reject) => {
XXX.upsertWithWhere(where clause,data, (err, data) => { // a loopback method
if (err) {
return reject(err);
}
return resolve(data);
});
});
Promise.all(promises).then((err, data) => {
if (err) {
return callback(err);
}
callback(null, data);
});
});
};
我想把承诺放在一边,但仍然与拒绝ID 3相同的错误
upsert方法的签名
PersistedModel.upsertWithWhere([where], data, callback)
2 回答
我觉得这样的事情应该没问题(我没有测试过这段代码)
您需要将迭代包装在另一个方法中 . Build 承诺列表,然后等待它解决 . 如下