我正在使用Node和Mongodb来更新来自反应应用的交易。更新后,我希望收到成功或错误的响应。
在我的设置中,应用API会调用以下代码。代码可以找到并且更新成功。如何在更新完成后显示成功或错误(如果有的话),如何返回对api的响应?我无法在UpdateDB中执行此操作,导致无法访问响应。我应该以不同的方式设置它吗?
exports.updateTransactions = function(req, res) {
console.log('update transtest function entered with req.body value: ', req.body);
let transactions = req.body.transUpdate;
let returnType = req.body.returnType;
let year = req.body.year;
let transid;
let category;
let notes;
for (var i = 0, len = transactions.length; i < len; i++) {
transid = parseInt(transactions[i].transid);
category = transactions[i].category;
notes = transactions[i].notes;
var update = {
$set: {
category: category,
notes: notes
}
};
var filter = {
transid: transid
};
UpdateDB(filter,update)
}
}
function UpdateDB (filter, update){
db.collection('transtest', function(err, collection) {
collection.findOneAndUpdate(filter, update,function(err, items) {
});
});
}
答案 0 :(得分:0)
您的问题可能会使用javascript的async
await
和try
catch
功能解决。
在这里,我写了一些可能有用的代码。
将这些内容添加到您的代码中并尝试它是否有效。
exports.updateTransactions = async function (req, res) {
// ...
for (var i = 0, len = transactions.length; i < len; i++) {
// ...
try {
await UpdateDB(filter, update);
} catch (error) {
return error;
}
}
return "success";
}
async function UpdateDB(filter, update) {
var collection = await db.collection('transtest');
await collection.findOneAndUpdate(filter, update);
}