supportChat: function(){
return functions.https.onRequest((req, res) => {
var userId = req.query.userId;
var object = {};
db.ref("https://stackoverflow.com/users/-KwZ2N38Q6a1a87p982/threads").orderByKey().once('value').then(function(snapshot) {
var snap = snapshot.val();
var keys = Object.keys(snap);
for (var i = 0; i < keys.length; i++){
k = keys[i];
db.ref("/threads/"+k+"/lastMessage").orderByKey().once('value').then(function(snapshot){
var snapshot = snapshot.val();
if (snapshot[i]["sender"] != "-KwZ2N38Q6a1a87p982"){
object[snap[i]["messageID"]] = snapshot;
}
});
}
console.log(object);
return res.status(200).send(object);
});
});
},
Jeder Benutzer in meiner Datenbank hat ein Thread-Kind, das alle Chat-Threads anzeigt, die sie haben. Dann haben wir einen anderen Thread-Abschnitt der Datenbank, der alle Daten dieses Threads enthält.Wie mache ich eine verschachtelte Datenbankabfrage innerhalb einer for-Schleife?
Was ich versuche zu tun ist zu überprüfen, eine bestimmte Benutzer Threads-IDs für den Thread-Abschnitt der Datenbank, um alle Threads zu finden, wo die letzte Nachricht im Thread nicht von mir (aktueller Benutzer) gesendet wurde.
Ich habe keine Ahnung, warum ich damit zu kämpfen habe. Was ist der richtige Weg, um alle snapshot.val() von jedem Thread, der meine Bedingung erfüllt, an den Endpunkt auf einmal zu senden? Vielleicht ist mein Ansatz weit entfernt.
Danke! Sieht viel robuster aus! Ich habe das versucht, aber als es lief, gab es nur ein Nachrichtenobjekt zurück (ein Ergebnis). Es gibt jedoch Hunderte. Wo denkst du könnte es schief gehen? – ryangineer
@ryangineer - Hast du die 'var i' in' let i' in deiner 'for' Schleife geändert, wie ich es gezeigt habe? Dies ist erforderlich, damit nicht alle Ergebnisse den gleichen Index verwenden. – jfriend00
machte eine kleine Änderung an meinem Ende (kleiner Tippfehler). und hab es geschafft! Das hat super geklappt! thannnnkkk youuuuuuu. – ryangineer