【发布时间】:2016-03-30 08:20:43
【问题描述】:
以下代码是将有关费用和已完成任务的信息收集到账单数据库中的事件。每次我运行这个过程时,我都会在账单数据库中获得 2 个条目。第一个条目总是空的,第二个有我想要的条目。
'click .ConfirmCloseCase': function (event) {
var caseID = Session.get('CurrentClosingCaseID');
var TasksToChange = Tasks.find({caseID:caseID,done:true,billed:false});
var ExpensesToChange = Expenses.find({caseID:caseID,billed:false});
// Create new Entry into bills Database
Bills.insert({"expensestotal":0,"taskstotaltime":0}, function(error, result) {
// Set all Tasks to billed
TasksToChange.forEach(function(task){
Tasks.update(task._id, {$set: {"billed": true} })
Meteor.call( 'BillsUpsert', result, {$push: {"tasks": task._id}} );
Meteor.call( 'BillsUpsert', result, {$inc: {"taskstotaltime": task.hours}} );
})
// Set all Expenses to billed
ExpensesToChange.forEach(function(expense){
Expenses.update(expense._id, {$set: {"billed": true} })
Meteor.call( 'BillsUpsert', result, {$push: {"expenses": expense._id}} );
Meteor.call( 'BillsUpsert', result, {$inc: {"expensestotal": expense.amount}} );
})
Router.go('/Bills');
})
},
流星调用是这样的:
Meteor.methods({
BillsUpsert: function( id, doc ){
Bills.update( id, doc );
}
});
我猜我在数据库中有 2 个条目是因为代码是异步运行的。这是一个正确的假设吗?......作为后续行动,是否有一个“简单”的修复? :)
【问题讨论】:
标签: javascript mongodb asynchronous meteor