sequelize with async和find方法

时间:2014-03-31 08:53:50

标签: node.js sequelize.js

首先为我可怜的英语道歉。

我无法访问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 })
  }) 

感谢您的耐心等待。

1 个答案:

答案 0 :(得分:1)

我看到的一些事情:

你的分号在哪里?!! :)

您的行newvehicles["vsr"] = vehicle.vsr.selectedValues;每次都分配相同的值。我看到你使用.push()在tope的那个数组中添加新项目(我认为这是你从JSON响应属性名称“items”的意图),你应该在那一行做同样的事情。或者分配给一个新的子元素。

由于vehicle调用,变量find()只是async.forEach方法的一部分 - 每个项目函数有一个名为vehicle的变量,可以在那个功能范围。

如果您想在var vsrnew = Array()之外使用它,请不要在.find()中创建新数组。{/ p>

很乐意评论更多,更新你的问题。