【问题标题】:firebase: add condition 'where' property between 2 valuesfirebase:在 2 个值之间添加条件“where”属性
【发布时间】:2021-08-22 13:13:58
【问题描述】:

我的结构数据库(数据库产品):

{
...
data: {
    value_a: 15.2,
    value_b: 7.1
  }
},
{
...
data: {
    value_a: 14.1
    value_b: 2.5
  }
},
{
...
data: {
    value_a: 16.7
    value_b: 5.2
  }
}

我的请求 a) 如果 value_a 介于 14 和 15 之间,我想返回产品列表 b) 如果 value_a 介于 14 和 15 之间且 value_b 介于 2 和 5 之间,我想返回列表产品。

我检查了运算符“in”,但不适用于 (a)。

 firestore().collection('products')
            .where("data.value_a", "in", [14, 15])

【问题讨论】:

    标签: javascript firebase react-native google-cloud-firestore


    【解决方案1】:

    a) 如果 value_a 介于 14 和 15 之间,我想返回产品列表

    要解决这个问题,您应该使用以下查询:

    firestore().collection('products')
            .where("data.value_a", ">=", 14)
            .where("data.value_a", ">=", 15)
    

    然而,

    b) 如果 value_a 介于 14 和 15 之间且 value_b 介于 2 和 5 之间,我想返回列表产品。

    这是不可能的。您无法根据多个属性过滤记录。有一个解决方法,所以请检查我从以下帖子中的答案:

    【讨论】:

      【解决方案2】:

      in 运算符仅在您有 value_a 的值列表时才有效。为了实现你想要的,你应该结合查询:

      firestore().collection('product_geoloc')
          .where("data.value_a", ">=", 14)
          .where("data.value_a", "<=", 15)
      

      【讨论】:

      • 第二种解决方案绝对不可能。请检查此answer
      猜你喜欢
      • 1970-01-01
      • 2016-08-13
      • 2016-09-26
      • 2022-11-03
      • 1970-01-01
      • 2014-10-16
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多