在循环node.js中callback
我不明白如何在循环中设置callback:
models.chat_user.find( {user_id: app.locals.session.user._id}, function(err, result){ if(result.length < 1){ chat.user = new models.chat_user({ user_id: app.locals.session.user._id }) chat.user.save(); } models.chat_user.find(function(err, result){ for(value in result){ models.user.findOne({_id: result[value].user_id}, function(err, user){ chat.users[value] = {}; chat.users[value].username = user.username chat.users[value].mail = app.locals.user.getAvatar(user.mail, 50); }); } }) });
当我在循环中find所有数据时,我想设置一个callback函数,但是我不知道如何使用result.lenth的条件,但这不是很干净
谢谢
像这样使用async.forEach
:
models.chat_user.find(function(err, result){ async.forEach(result, function(value, callback) { models.user.findOne({_id: result[value].user_id}, function(err, user){ chat.users[value] = {}; chat.users[value].username = user.username chat.users[value].mail = app.locals.user.getAvatar(user.mail, 50); callback(err); }); }, topLevelCallback); });
当所有的forEach
迭代都调用它们的callback
函数时,会调用topLevelCallback
,如果有错误则传递任何错误。
- 将parameter passing给callback node.js
- 填充位于callback函数范围之外的数组
- 我应该如何批量上传到s3,并通过最终callback从nodeJS webserver插入到MongoDB?
- 使用嵌套的async.forEachSeries和async.waterfall来控制Lambda Node.js代码的sorting
- Node-Postgres查询方法不调用它的callback函数
- NodeJSasynchronouscallback不完成&呈现把手模板
- 有JavaScript内存泄漏recursion调用callback函数?
- 名称Promisevariables等于callback参数
- Node.js + Express – 在完成之前返回未定义的callback