0
나는 node.js, mongoose 및 foursquare API를 사용하고 있습니다.자바 스크립트 변수 범위 몽구스 쿼리
foursquare.getVenues(params, function(err, venues) {
if(err) return res.json(JSON.stringify({status: 'error', returnData: err}));
// variable initialization
var rooms = [];
var vanueItem;
// iterate foursquare return list (venue item)
venues.response.venues.forEach(function(item) {
Room.aggregate(
[
{ "$group": {
"_id": '$mobileUser.genderType',
"genderTypeCount": { "$sum": 1 }
}}
],
function(err,result) {
if(err) return res.json(JSON.stringify({status: 'error', returnData: err}));
// build it to return after
vanueItem =
{
id: item.id,
name: item.name,
description: item.description,
contact: item.contact.formattedPhone,
lat: item.location.lat,
lng: item.location.lng,
distance: item.location.distance,
city: item.location.city
};
// insert it into venue array
rooms.push(vanueItem);
}
);
});
return res.json(JSON.stringify({ status: 'success', returnData: rooms }));
});
나는 방 배열에 문제가 있어요. 'Room.aggregate'쿼리를 제거하면 제대로 작동하지만 모든 집은 괜찮습니다. 그러나 집계를 사용하면 리턴 함수가 비어있는 공간을 제공합니다.
'var rooms = [];'에서 이미 var를 제거하려고했습니다. 당신은 당신이 비동기 라이브러리를 사용할 수 있습니다 비동기 기능을 반복하려는 경우
주셔서 감사합니다, 그 가공 한 미세처럼, 비동기 기능입니다! 하지만 질문이 있는데 ... 왜 "다음 (오류)"코드를 작성해야합니까? – Ren4n
@ Ren4n 예제를 업데이트했습니다. 다음은 비동기 쿼리가 완료되었을 때 한 번 호출되는 콜백 함수입니다. next (err) -이 코드는 비동기 쿼리가 오류를 반환하면 마지막 콜백에서 오류 메시지가 표시됨을 의미합니다. 다음 (null) - 검색어가 완료되면 배열의 다음 항목으로 이동해야합니다. http://goo.gl/ed865p –