Node.js 使用async和find方法进行续集

Node.js 使用async和find方法进行续集,node.js,sequelize.js,Node.js,Sequelize.js,首先为我糟糕的英语道歉 我无法访问find方法之外的更新的vehicle.vsr.selectedvalue async.forEach(vehicles, function(vehicle, callback){ newvehicles.push(vehicle.selectedValues) Contractor.find({ 'where': { 'id': (vehicle.vsr.contractor_id).toString().trim() } })

首先为我糟糕的英语道歉

我无法访问find方法之外的更新的vehicle.vsr.selectedvalue

     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) 我有一个vehicles数组及其关联的VSR详细信息。 2) 我试图在现有车辆JSON中添加一个元素(承包商名称)。 3) 为此,我正在形成新的阵列并发送到响应

阻碍是我无法在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 })
  }) 

感谢您的耐心。

我看到的一些事情:

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

您的行
newvehicles[“vsr”]=vehicle.vsr.selectedValues每次都指定相同的值。我看到您使用
.push()
在tope处向该数组添加新项(我认为这是JSON响应属性名称“items”的意图),您应该在该行执行相同的操作。或指定给新的子元素

变量
vehicle
只是
find()
方法的一部分,因为
async.forEach
调用-每项函数有一个名为
vehicle
的变量,可以在该函数范围内访问

如果要在
.find()
之外使用新数组,请不要在
.find()
中创建新数组(
var vsrnew=Array()


将很高兴发表更多评论,并用细节更新您的问题。

衷心感谢您的更新,忽略分号。我在上面的问题中找到了我。我正在获取一条记录,并在同一个对象中添加名为contractor_name的新元素,并将其推入一个新数组。到目前为止,一切都很顺利。现在我担心的是,新的阵列并没有形成为车辆列表,bcoz它是异步过程。如何避免这种情况,车辆按排序顺序检索,之后我要获取contractors。您需要确保要推入的对象/数组在
async.each
调用上方定义。否则,作用域位于
每个
函数中,然后在作用域消失时丢失。一旦获得了所需的所有元素,您可能需要在
async.each
的末尾进行排序。