我有一个JSON输入,其中包含将其链接到辅助模型(用户)的数据。我需要遍历listingData.Agents以获取索引ID,然后查找此索引ID以获取用户。我将此推送到数组的用户ID,但由于异步,当运行create属性函数时,数组为空。如何操作并从阵列中获取数据,然后在所有数据到位后运行创建。
感谢。
exports.createProperty = function(req,res,next) {
var listingData = req.body;
listingData.User = [];
_.forEach( listingData.Agents , function(n, key) {
User.findOne({ agentId : n.AgentId},function(err,user) {
listingData.User.push(user._id);
});
});
Property.create(listingData, function(err,property) {
if (err) {
res.status(400);
return res.send({reason:err.toString()});
}
res.send(req.property);
})}
答案 0 :(得分:1)
如果您不介意在代码中引入新库,node-async可以解决您的问题。
使用node-async,您的代码为:
var async = require('node-async')
exports.createProperty = function(req,res,next) {
var listingData = req.body;
listingData.User = [];
async.each(listingData.User,
function(n, key) {
User.findOne({ agentId : n.AgentId},function(err,user) {
listingData.User.push(user._id);
});
},
function (asyncErr){
//handle asyncErr first
Property.create(listingData, function(err,property) {
if (err) {
res.status(400);
return res.send({reason:err.toString()});
}
res.send(req.property);
});
});