【问题标题】:can i use array-contains and array-contains-any in the same firestore query on different fields?我可以在不同字段的同一个 Firestore 查询中使用 array-contains 和 array-contains-any 吗?
【发布时间】:2020-11-29 00:14:48
【问题描述】:

我目前正在构建我的 Firestore 数据库。我有一个“事件”集合,在其他字段中,我在数组中添加受邀用户的 uid 以及事件的状态,以了解它是否已发布、未发布、取消或已完成。我认为为了查询事件集合以了解用户是否应该能够看到事件 ID,需要类似

events.where(invitation,array-contains,currentUserUID).where(status,==,published)

并再次查询

events.where(invitation,array-contains,currentUserUID).where(status,==,canceled)

这样我可以显示两个结果,但是如果状态字段更改为只有一个元素的数组,我可以使用类似的东西

events.where(invitation,array-contains,currentUserUID).where(status,array-contains-any,[published,canceled])

但我不确定这是否是一个可以运行的查询,也许我只是想在查询 2 次时简化查询就可以了

【问题讨论】:

  • 我刚刚意识到只查询一次确实很重要,如果我添加一个 .orderby(time,dec).limit(10) 我会得到最新的 10,这可能会全部取消,所有出版或介于两者之间的任何东西。虽然将 .orderby(time,dec).limit(5) 添加到每个单独的查询中,我会得到每个查询中的 5 个,但不是满足任何要求的最新 10 个事件
  • 如果您不确定查询是否会运行,只需尝试并检查是否有错误。该错误会告诉您是否出了问题,以及发生了什么。

标签: javascript firebase google-cloud-firestore


【解决方案1】:

刚刚在doc 的底部几乎找到了我自己的问题的答案, 上面写着:

您可以将 array-containsin 结合使用,但不能与 array-contains-any 结合使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多