我有这个结构,其中有一个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)
})
如果您试图在文档中找到特定的工具,那么您可以为工具创建子集合。这样,您可以查询一个特定的,也可以在需要时直接更新它。