【问题标题】:Firebase Firestore order by 2 fields conditionallyFirebase Firestore 有条件地按 2 个字段排序
【发布时间】:2021-06-16 08:54:58
【问题描述】:

我在 Firestore 中有一些文档,除了其他字段外,还有两个名为 lastUpdatedlastProcessedTimestamp 字段。 lastUpdated 字段在用户通过 Web 控制台更新记录的字段时更新。 lastProcessed 字段在后端函数处理文档时更新(作为用户单击按钮的结果)。

以下是这两个字段的可能组合。

  1. 用户只更新了文档,但尚未处理(lastUpdated == some_timestamplastProcessed == ''
  2. 用户已更新文档,然后处理 (lastUpdated < lastProcessed)
  3. 用户已更新文档,已处理并重新更新 (lastUpdated > lastProcessed)

我的要求是执行查询以获取这些记录的子集(例如前 10 个),按其最近的时间戳排序。因此,在评估排序记录时,应考虑上述场景 13lastUpdated 字段。但lastProcessed 字段应考虑用于场景2

Firestore 可以做到这一点吗?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    查询 Firestore 数据库时,无法执行您在问题中解释的逻辑(即即时计算要应用的场景并定义查询中应使用的字段)。

    一个经典的解决方案是在包含要查询的值的文档中添加一个额外的字段。该字段的值可以在您从前端修改文档时计算(根据业务逻辑),或者通过每次更改文档时在后端触发的云函数来计算。

    使用云函数的主要优点是防止用户修改该字段的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 2018-04-14
      • 2019-09-26
      • 2017-03-11
      相关资源
      最近更新 更多