【发布时间】:2021-12-08 21:56:19
【问题描述】:
我正在努力让它正常工作。我的 nodejs 后端有这个功能
let data = [];
let lists = [];
var userId = request.params.userId;
var coll = db.collection("forms");
var query = coll.where("formUser", "==", userId);
await query.get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
var forms = doc.data();
var listIDs = doc.data().formLists;
listIDs.forEach(listId => {
db.collection("lists").where("listId", "==", listId).get().then(function (snapshot) {
snapshot.forEach(function (d) {
lists.push({ "id": d.data().listId, "text": d.data().listName });
});
});
});
forms.formLists = lists;
data.push(forms);
});
});
由于某种原因,第二个循环不只是工作,数据的结果来自第一个循环,如果我将相同的函数放在我的 javascript 前端,我会得到带有 listIDs 结果的完整数据。
有什么想法吗?
【问题讨论】:
-
虽然this question 处理来自异步调用的 Promise,但它包含大量与您的问题相关的信息。另请查看侧栏中的许多链接问题。
-
@samthecodingman 谢谢,我认为问题不在于基于您共享的链接的返回 ajax,而在于我上面的后端函数。我觉得我必须围绕 Promise.all 做点什么,但不知道怎么做。
-
这里是another question,为您的问题提供相同的解决方案。
标签: node.js firebase async-await google-cloud-functions