MongoJS (node.js mongodb ラッパー) を使用して 2 つの個別のコレクションをクエリして、EJS を使用してビューでレンダリングするオブジェクトの配列を構築しようとしています。
私が遭遇した問題は、スコープに関係しているようです。
function getTeamMembers(projectID){
var members = []; //<-- Instantiate the array of objects I want to return
Projects.findOne(
{ _id : mongojs.ObjectId(projectID) },
function(error, result){
/// Loop through the team to get the member's data
/// and push it on the members array
var team = result.team; //<-- This is an array of objects
for(var i = 0; i < team.length; i++){
members[i] = {};
members[i].accountID = team[i].accountID;
members[i].status = team[i].status;
Accounts.findOne(
{ _id : mongojs.ObjectId(team[i].accountID) },
function(error, doc){
/// The following line produces the error:
/// 'Cannot set property name of undefined'
members[i].name = doc.name;
}
);
}
response.send(members);
}
);
}
配列を正しい場所でインスタンス化してmembers[]
、子関数で使用できるようにしていると思いますが、まだこのエラーが発生しています:
TypeError: 未定義のプロパティ 'name' を設定できません