我如何从 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。这样,您就可以查询一个特定的,并在需要时直接更新它。