所以当我发出DELETE请求时,我正在更新我的模型并删除所选的数组项。然后我通过ajax发回更新的JSON数据。我使用聚合方法来确定数组中所选值的总和,但问题是聚合方法是在删除列表项之前根据可用内容返回数据,即使我将它放在回调中。那么我怎样才能获得正确的更新总和?这是我正在使用的代码:
regUser.findOneAndUpdate(
{ username:req.user.username },
{ $pull: { budgets : { uniqueId: parseFloat(req.param('id')) }} },
function(err, data){
if(err) return console.log(err);
regUser.aggregate([
{ $match : { username : req.user.username } },
// Unwind the array to de-normalize the items
{ "$unwind": "$budgets" },
// Group the totals with conditions
{ "$group": {
"_id": "$_id",
"expense": { "$sum": {
"$cond": [
"$budgets.expense",
"$budgets.value",
0
]
}},
"nonExpense": { "$sum": {
"$cond": [
"$budgets.expense",
0,
"$budgets.value"
]
}}
}}], function(err, aggData){
sumData = aggData
});
res.json({
sumData: sumData,
budgetList: data.budgets
});
});
答案 0 :(得分:1)
异步编程问题:)。移动:
res.json({
sumData: sumData,
budgetList: data.budgets
});
在regUser.aggregate回调函数中。
function(err, aggData){
res.json({
sumData: aggData,
budgetList: data.budgets
});
});