0
Ich habe eine mongojs Abfrage wie:Asynchroner Aufruf von mongojs finden Funktion
db.mapping.find(
{ "provider":req.params.provider, "perId":mongojs.ObjectId(req.params.perId) },
function(err, que){
if(err)
res.send(err);
else if(que)
{
totalVideoList = [];
for (var i=0; i < que.length; i++)
{
myid = que[i].providerId;
db.ABC.find({}, function(err, que1){
if(err)
res.send(err);
var x = {};
for (var j=0; j < que1.length; j++)
{
searching(que1[j]);
}
videoList = [];
getVideo(requiredDocument);
totalVideoList = totalVideoList.concat(videoList);
});
}
res.json(totalVideoList);
}
else
res.json([]);
});
Zur Zeit habe ich immer bin immer [] (leeres Array) als meine Antwort. Das Problem liegt an der asynchronen Natur der Rückruffunktion von Mongojs. Bevor die erwartete Ausgabe in der Variable "totalVideoList" eintrifft, antwortet sie mit totalVideoList = []. Ich weiß nicht, wie async.each() hier zu verwenden ist. Bitte helfen Sie mir, dieses Problem anzugehen.
Sir verwenden, das funktioniert nicht so gut. –
Ich bekomme das Ergebnis des ersten Elements der äußeren Abfrage in totalVideoList wiederholt. Ich denke, das liegt daran, dass Sie res.json (totalVideoList) innerhalb der async.each() -Funktion platziert haben. Aber als ich es außerhalb davon platziert habe, gibt es wieder leere Arrays zurück. –
@AmandeepSachan Sind Sie sicher, dass Sie meinem Beispielcode folgen? Ich sende Json, wenn alle asynchronen Funktionen getan –