2014-03-31 3 views
0

제 가난한 영어에 대한 첫 사과.async와 sequelize하고 방법을 찾으십시오

find 메소드 외부에서 updated.vsr.selectedvalues에 액세스 할 수 없습니다.

단계 본인은 차량 어레이가 그들의 연관된 vsrdetails)

1

따랐다. 2) 기존 차량 JSON에 하나 이상의 요소 (contractor_name)를 추가하려고합니다. 3) 이것을 위해 나는 새로운 배열을 형성하고 응답에 보냅니다.

내가 찾은 방법 이외의 업데이트 된 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

내가 보는 일부 것 :

세미콜론은 어디에 있습니까? !! :)

라인 newvehicles["vsr"] = vehicle.vsr.selectedValues;은 매번 동일한 값을 지정합니다. .push()을 사용하여 해당 항목에 해당 항목에 새 항목을 추가하는 것을 보았습니다 (JSON 응답 속성 이름 인 "항목"의 의도라고 생각합니다). 그 줄에서 동일한 작업을 수행해야합니다. 또는 새 하위 요소에 지정하십시오.

가변 vehicle 인해 async.forEach 통화에 find() 방법의 일부 - 별 항목 기능이 기능 범위에 액세스 할 수 vehicle라는 변수를 갖는다.

외부에서 사용하려는 경우 .find()에 새 배열 (var vsrnew = Array())을 만들지 마십시오.

자세한 내용은 기꺼이 의견을 말하고 구체적으로 질문을 업데이트하십시오.

+0

업데이트 해 주셔서 감사합니다. 세미콜론을 무시하십시오. 알았어 –

+0

안녕하세요 @ 클레이, 위의 질문에. 레코드를 가져 와서 동일한 오브젝트에 contractor_name이라는 새 요소를 추가하고 새 배열로 푸시합니다. 여기까지 모든 것이 잘 작동합니다. 이제 내 관심사는 새로운 어레이가 차량 목록으로 형성되지 않는다는 것입니다. bcoz는 비동기 프로세스입니다. 이것을 피하는 방법, 정렬 된 순서대로 검색된 차량은 계약자를 가져오고 싶습니다. –

+0

당신이 넣고있는 객체/배열이'async.each' 호출 위에 정의되어 있는지 확인해야합니다. 그렇지 않으면 스코프가'each' 함수 내에 있고 스코프가 사라지면 스코프가 사라집니다. 원하는 모든 요소가 있으면'async.each'의 끝에서 정렬해야 할 수도 있습니다. – clay

관련 문제