【发布时间】:2021-02-16 12:50:47
【问题描述】:
我正在构建 javascript 服务,我想从 "collection name" 和 "document-id arrays" 的输入中获取来自 firestore 的所有子集合文档详细信息。
请求有效负载调用我的服务:
{
root_collection_name: "root_collection",
"msgId": ['11','22','33','66'],
"subcollection_name": "message"
}
我需要为所有这些 msgId 的搜索所有 子集合(所有文档的通用名称)文档。
我的 Firestore 结构如下所示
collection:
document1:
subcollection:
document:
"val1":"red",
"val2":"blue",
"val3":"green"
document2:
subcollection:
document:
"val1":"apple",
"val2":"mango",
"val3":"grape"
document3:
..............
................
示例:
root_collection:
11:
aaa:
message:
"val1":"red",
"val2":"blue",
"val3":"green"
22:
bbb:
message:
"val1":"apple",
"val2":"mango",
"val3":"grape"
在这种情况下,我需要获取 msgId "11"、"22" 的数据,这些数据在 firestore 中可用,其他值应该发送空值。你能不能帮我解决这个问题,我不确定我在这里错过了什么。
这是我为此编写的代码。
const input = {
"root_collection_name": "root_collection",
"msgId": ['11','22','33','66'],
"subcollection_name": "message"
}
const test = (input) => {
const query = firestore.collection(input.root_collection_name).where('id', 'array-contains-any', input.msgId);
query.get().then((querySnapshot) => {
querySnapshot.forEach((document) => {
document.ref.collection(input.subcollection_name).get().then((querySnapshot) => {
querySnapshot.forEach(doc => {
console.log('doc data',doc.data());
});
});
});
});
};
test(input);
【问题讨论】:
-
据我了解,您希望使用您提供的有效负载显示文档及其字段“val”。如果是这样,您能否更新并包括您如何在代码中调用这些有效负载输入?这将帮助社区复制您的程序,而无需花费太多时间让您的代码在他们的环境中运行。
-
@DonnaldCucharo 你说得对,我需要使用上面代码中添加的输入有效负载来获取“val”字段。如果您需要更多详细信息,请告诉我。
标签: javascript node.js firebase google-cloud-platform google-cloud-firestore