我怎么能从数组中的json在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红色,在这种情况下我只需要得到第一个元素

i tried with this

query = query.where('data.tools', "array-contains", {trait: 'color1', value: 'red'})

您的查询获取data.tools包含该对象的文档。它过滤该数组。您需要在获取docs后自己解析该对象:

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)
})

如果您试图在文档中找到特定的工具,那么您可以为工具创建子集合。这样,您可以查询一个特定的,也可以在需要时直接更新它。

最新更新