find文件,做一些业务逻辑,并删除使用mongoose

我想知道如果下面的代码将工作,如果不是任何人都可以请提供一个替代?

db.model('orders').find({creationDate: {$lt:today}}, {status: "Active"}).exec(function(err,orders){ if(err) ... if(orders){ for(var i = 0 ; i < orders.length ; i++){ // some business logic here.... orders[i].remove(function(err){ if(err) ... }); } } }); 

我的目标是根据creationDatestatus查询一些文档,然后根据这些文档做一些业务逻辑。 一旦我完成了业务逻辑,我想编辑这些文档并将其保存到数据库。

感谢帮手。

更简单直观的方法是使用asynchronous库。 当需要运行多个彼此依赖的任务时,使用async.series()方法,并在完成时执行其他操作。

考虑下面的例子:

 // Define query document out here, so both tasks can access it var query = {"creationDate": {"$lt": today}}, {"status": "Active"}; async.series([ // Load orders that satisfy the above query to do the business logic first function(callback) { db.model('orders').find(query).exec(function(err, orders) { if (err) return callback(err); // Do the business logic here .... callback(); }); }, // Update orders (won't be called before task 1's "task callback" has been called) function(callback) { db.model('orders').update( query, {"$set": {"status": "Deleted"}}, {"multi": true} ).exec(function(err, results) { if (err) return callback(err); callback(); }); } ], function(err) { // This function gets called after the two tasks have called their "task callbacks" if (err) return next(err); // Do something else after the two tasks have been called });