Seit Stunden auf diesem Problem festgefahren. Der Code unten:Knoten JS mongoose Abfrage produziert nicht Ergebnis
router.route("/contact")
.get(function(req,res){
var response = {};
Contact.find({},function(err,data){
if(err) {
response = {"error" : "Error fetching data"};
} else {
response = {"message" : data};
}
res.json(response);
});
})
Above Abfrage erzeugt mit allen Kontakten in der Datenbank führen aber
router.route("/contact/department/:dept")
.get(function(req,res){
var response = {};
var arrDept = req.params.dept.split(",");
if(arrDept.length == 0){
response = {"error": " Please enter Department keywords"};
}
else{
response = {};
arrDept.forEach(function(currentValue){
Video.find({dept: '/'+currentValue+'/i'}, function(err, data){
if(err){
response[currentValue] = "No data found";
}else{
response[currentValue] = data;
}
});
});
}
res.json(response);
});
dieser Code erzeugt keine Ausgabe.
Der Code ist die Eingabe der forEach Schleife in dem sonst blockieren, aber die Abfrage erzeugt kein Ergebnis, selbst wenn ich die Abfrage auf ein Basis einer wie
Video.find({},function(err, data){
if(err){
response[currentValue] = "No data found";
}else{
response[currentValue] = data;
}
});
Die Reaktion modifizieren JSON noch leer zurückgeführt wird.
PS: Das Problem wurde vereinfacht, da es nur ein Beispiel für das aktuelle Problem ist, mit dem ich im Code konfrontiert bin. Update nach Antwort gefunden.
danke DAXaholic .... aber wie füge ich Daten von jeder Iteration der Schleife an die Antwort JSON-Objekt? –
Um es ohne weitere Helfer-Bibliothek zu tun, könnten Sie z.B. pflege ein Array außerhalb des Callbacks mit den Ergebnissen und füge es dem Callback hinzu und sobald die Größe dieses Arrays gleich 'arrDept' ist, weißt du, dass du alle Ergebnisse erhalten hast. Aber um ehrlich zu sein, ist es viel einfacher und unkomplizierter, etwas wie async.js zu verwenden. Ein schnelles Beispiel dafür, was ich meine, finden Sie unter https://github.com/caolan/async#map. – DAXaholic
thnx ... ich habe es endlich mit Versprechen gelöst. var promise = Kontakt.find ({dept: {$ in: arrayDept}}). exec(); \t \t \t promise.then (function (resultJson) { \t \t \t \t res.json (resultJson); \t \t \t}); –