我如何从 firebase json 中的数组中获取元素?
How can i get the elements from an array inside of json in firebase?
我有这个结构,里面有一个 json 对象,那个对象有一个 json 个对象的数组
我需要问他们 color1 是否是红色的,例如 btw
name:carla
data: {
sign: "carly",
tools: [{trait:color1, value:red}, {trait:color2, value:white}] }
},
name:dany
data: {
sign: "dan",
tools: [{trait:color1, value:blue}, {trait:color2, value:black}]
}
所以我只想获取具有 color1 红色的元素,在这种情况下我应该只获取第一个元素
我试过这个
query = query.where('data.tools', "array-contains", {trait: 'color1', value: 'red'})
您的查询获取 data.tools
包含该对象的文档。它不会过滤该数组。获取文档后,您需要自己解析该对象:
const qSnap = await query.get();
qSnap.docs.forEach((doc) => {
const item = doc.data().data.tools.find(t => t.trait === 'color1' && t.value == 'red');
console.log(item)
})
如果您试图在文档中查找特定工具,则可以为工具创建 sub-collection。这样,您就可以查询一个特定的,并在需要时直接更新它。
我有这个结构,里面有一个 json 对象,那个对象有一个 json 个对象的数组
我需要问他们 color1 是否是红色的,例如 btw
name:carla
data: {
sign: "carly",
tools: [{trait:color1, value:red}, {trait:color2, value:white}] }
},
name:dany
data: {
sign: "dan",
tools: [{trait:color1, value:blue}, {trait:color2, value:black}]
}
所以我只想获取具有 color1 红色的元素,在这种情况下我应该只获取第一个元素
我试过这个
query = query.where('data.tools', "array-contains", {trait: 'color1', value: 'red'})
您的查询获取 data.tools
包含该对象的文档。它不会过滤该数组。获取文档后,您需要自己解析该对象:
const qSnap = await query.get();
qSnap.docs.forEach((doc) => {
const item = doc.data().data.tools.find(t => t.trait === 'color1' && t.value == 'red');
console.log(item)
})
如果您试图在文档中查找特定工具,则可以为工具创建 sub-collection。这样,您就可以查询一个特定的,并在需要时直接更新它。