0
我正在使用node.js,mongoose和foursquare API。當貓鼬查詢時Javascript可變範圍
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 2014-12-05 20:46:57
@ Ren4n我更新了示例..,next是在異步查詢完成時調用一次的回調函數,next(err) - 此代碼表示如果異步查詢返回錯誤,則在上次回調中,我們會收到錯誤消息。 next(null) - 查詢完成時需要進入數組中的下一個項目... http://goo.gl/ed865p – 2014-12-05 20:57:35