通过where子句查找具有嵌套对象值的记录

zbdgwd5y  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(414)

如果需要,我想进行多重搜索 .where 如果“sku”没有给出任何结果,请继续搜索“sku”的值 additional_attributes.refKey 关于如何根据嵌套对象值在firestore中查找记录的任何想法,例如:

const ref = db.collection('products')

  let snapshot = await ref.where('sku', '==', req.query.id).get()

  if (snapshot.empty) {
    snapshot = await ref.where('additional_attributes', 'array-contains', req.query.id).get()

    if (snapshot.empty) return res.json([])
  }

  const collection = []

  snapshot.forEach(doc => {
    collection.push({ id: doc.id, ...doc.data() })
  })

  res.json(collection)

我也试过这样做:

snapshot = await ref.where('additional_attributes', 'array-contains', { refKey: req.query.id }).get()

但它也没有给我任何结果。知道我做错了什么吗?

dgtucam1

dgtucam11#

你需要使用 dot notation 要访问嵌套属性,请执行以下操作:

await ref.where('additional_attributes.refKey', '==', req.query.id)
//                                     ^^^^^^

您可以使用相同的方法来使用其他运算符,例如 array-contains 如果要在数组中查找元素。

相关问题