gpt4 book ai didi

javascript - Firestore 中使用单独的查询而不是多个 Where 子句

转载 作者:行者123 更新时间:2023-12-03 00:51:11 26 4
gpt4 key购买 nike

我想使用两个参数查询 firebase firestore 数据集合。

系列:动物

"animals": {
"1": {
"animal1": "cat",
"animal2": "dog",
"animal3": "",
"animal4": ""
},
"2": {
"animal1": "dog",
"animal2": "cat",
"animal3": "",
"animal4": ""
},
"3": {
"animal1": "cat",
"animal2": "bird",
"animal3": "dog",
"animal4": ""
},
"4": {
"animal1": "wolf",
"animal2": "dog",
"animal3": "bird",
"animal4": ""
},
"5": {
"animal1": "turtle",
"animal2": "dog",
"animal3": "wolf",
"animal4": "cat"
},
"6": {
"animal1": "dog",
"animal2": "wolf",
"animal3": "turtle",
"animal4": "bear"
},
"7": {
"animal1": "spider",
"animal2": "beatle",
"animal3": "butterfly",
"animal4": "Cat"
}
}

我想要获取包含 catdog 的列表数据。有信息In here逻辑或查询。在这种情况下,您应该为每个 OR 条件创建单独的查询,并将查询结果合并到您的应用中。

我不知道我需要多少个单独的查询?

let param1 = 'cat';
let param2 = 'dog';

let query1 = db.collection('animals').where('animal1', '==', param1);
let query2 = db.collection('animals').where('animal2', '==', param1);
let query3 = db.collection('animals').where('animal3', '==', param2);
let query4 = db.collection('animals').where('animal4', '==', param3);

最佳答案

正如您所指出的“您应该为每个 OR 条件创建一个单独的查询,并将查询结果合并到您的应用程序中”。由于您的数据模型有 4 个字段(animal1animal4),因此您需要为您想要的每个 param 值创建 4 个查询进行测试。

因此,如果有 2 个参数,如下所示:

let param1 = 'cat';
let param2 = 'dog';

您必须合并 2*4 查询的结果......

如果您更改数据模型并使用数组来存储animal 值,则有可能减少此数字。然后,您可以利用 array_contains 运算符。

建议的数据模型:

"animals": {
"1": {
"animalArray":
[
0: "cat",
1: "dog"
]
},
"2": {
"animalArray":
[
0: "turtle",
1: "dog",
2: "wolf",
3: "bear",
]
}
.....
}

在我们的两个参数示例中,您只需要两个查询,如下所示:

let query1 = db.collection('animals').where("animalArray", "array-contains", param1);
let query2 = db.collection('animals').where("animalArray", "array-contains", param2);

关于javascript - Firestore 中使用单独的查询而不是多个 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53032579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com