Ma *_*obi 5 javascript google-cloud-firestore
我正在开发一个浏览器游戏,我在firestore中有一个集合,如下所示:
{
title: "doc 1",
requirements: {
level: {
min: 2,
max: 3
}
}
},
{
title: "doc 2",
requirements: {
level: {
min: 6,
max: 8
}
}
},
{
title: "doc 3",
requirements: {
level: {
min: 8,
max: 9
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法查询匹配给定级别的所有文档,就像我的级别为8时我只想获取文档"doc 2"和"doc 3",因为级别要求匹配?
我尝试过类似的东西
ref.where("requirements.level.min", "<=", level);
ref.where("requirements.level.max", ">=", level);
Run Code Online (Sandbox Code Playgroud)
我还尝试将文档中的结构更改为:
{
title: "doc 1",
requirements: {
level: [2, 3]
}
},
{
title: "doc 2",
requirements: {
level: [6, 7, 8]
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样过滤它
ref.where("requirements.level", "array-contains", level)
Run Code Online (Sandbox Code Playgroud)
但是firestore总是把所有文件归还给我.
小智 3
数组包含在这里似乎是正确的选择。我已经检查了您的示例 -在我的 firestore 中重新创建了非常相似的结构 (其他文档具有相同的结构,但级别从 5 到 7)并运行这些查询:
const docs = firebase.firestore().collection('docs');
docs.where('requirements.levels','array-contains',2).get().then((snap) => {
console.log(snap.docs.length); //<- outputs 1, correct
});
docs.where('requirements.levels','array-contains',4).get().then((snap) => {
console.log(snap.docs.length); //<- outputs 0, correct
});
docs.where('requirements.levels','array-contains',5).get().then((snap) => {
console.log(snap.docs.length); //<- outputs 1, correct
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |