Ich bekomme keine Ergebnisse von verschachtelten Abfrage, loc ist immer Null. Der Abfrageparameter hat den richtigen Wert, wenn ich ihn drucke, und die Datenbanksammlung "Benutzer" enthält Dokumente mit IDs aus dem Array friendsP.Mongodb geschachtelte Abfrage mit Knoten js
var acquireFriendsPositions = function(db, id, res, callback) {
var cursor = db.collection('users').find({"_id" : new ObjectId(id)}, {_id:0, friends:1});
cursor.each(function(err, doc) {
assert.equal(err, null);
if (doc != null) {
friendsP = doc.friends;
console.log(friendsP); //I get the array friendsP
for(var i =0; i<friendsP.length; i++)
{
console.log(friendsP[i]); //friendsP[i] has proper value
var curs = db.collection('users').find({"_id" : new ObjectId(friendsP[i])}); //but query returns null
curs.each(function(err, loc) {
//assert.equal(err, null);
if(loc!= null) {
console.log(loc);
friendsPos.push(loc);
}
else {
console.log("else");
}
});
}
promise(friendsPos, res); //here i wait for friendsPos and use it in res.send(), but friendsPos is empty because loc is always null
} else {
callback(); //callback does db.close();
}
});
};
Danke Vasil, aber es ist das gleiche mit der lokalen Variablen friendsP. Außerdem enthält der Cursor nur ein Dokument, da ich nach ID abfrage. Sieht so aus, als müsste ich dbref? –