首先为我可怜的英语道歉。
我无法访问find方法之外的更新的vehicle.vsr.selected值。
我遵循的步骤
1)我有一个车辆阵列和他们的vsrdetails相关联。 2)我正在尝试在现有车辆JSON中添加一个元素(contractor_name)。 3)为此,我正在形成新阵列并发送给响应。
Impedement是我无法在find方法之外访问更新的vehicle.vsr详细信息。
async.forEach(vehicles, function(vehicle, callback){
newvehicles.push(vehicle.selectedValues)
Contractor.find({ 'where': { 'id': (vehicle.vsr.contractor_id).toString().trim() } }).success(function(contractor){
console.log(vehicle.vsr.contractor_id +"======"+ contractor.name + "========"+ vehicle.vsr.project_id)
var vsrnew = Array()
console.log("***************************************************")
console.log(newvehicles)
vehicle.vsr.selectedValues["contractor_name"] = contractor.name
vsrnew.push(vehicle.vsr.selectedValues)
newvehicles["vsr"] = vehicle.vsr.selectedValues
})
callback()
},function(){
return res.json({ "total": total, "start": start, "limit": limit, "items": newvehicles })
})
感谢您的耐心等待。
答案 0 :(得分:1)
我看到的一些事情:
你的分号在哪里?!! :)
您的行newvehicles["vsr"] = vehicle.vsr.selectedValues;
每次都分配相同的值。我看到你使用.push()
在tope的那个数组中添加新项目(我认为这是你从JSON响应属性名称“items”的意图),你应该在那一行做同样的事情。或者分配给一个新的子元素。
由于vehicle
调用,变量find()
只是async.forEach
方法的一部分 - 每个项目函数有一个名为vehicle
的变量,可以在那个功能范围。
如果您想在var vsrnew = Array()
之外使用它,请不要在.find()
中创建新数组。{/ p>
很乐意评论更多,更新你的问题。