我正在尝试使用字符串中保存的数据检索多个Firestore文档。我的想法是对于数组中的每个值,使用Firestore查询来检索与该查询匹配的文档,并将其推送到另一个数组中。但是,我在实现这一点时遇到了一些问题。到目前为止,我已经尝试过:
exports.findMultipleItems = functions.https.onRequest((request, response) => {
var list = ["item1", "item2", "item3", "item4"];
var outputList = [];
for (var i = 0; i < list.length; i++) {
console.log("Current item: " + list[i]);
let queryRef = db.collection("items").where('listedItems', 'array-contains', list[i]).get()
.then(snapshot => {
if (snapshot.empty) {
console.log('No matching documents.');
}
snapshot.forEach(doc => {
outputList.push(doc.data());
});
return;
})
.catch(err => {
console.log('Error getting documents', err);
});
}
response.send(JSON.stringify(outputList));
});
我不是完全确定,但我认为问题之一是for循环在查询有机会完成之前就已经完成了。
P.s - 这是通过使用Admin SDK在云函数中运行的。
outputList
将仅在查询完成后填充,并且没有任何东西等待这些查询完成。 - Doug Stevenson