【问题标题】:Firebase/Firestore: Is it possible to query .where(x == foo || x == bar)? [duplicate]Firebase/Firestore:是否可以查询 .where(x == foo || x == bar)? [复制]
【发布时间】:2019-05-10 09:15:14
【问题描述】:

我有一个用户集合,如下所示:

每个关注者/关注文档的结构如下:

{
  uid: ...,
}

我想创建一个满足这些条件的查询:

  1. 获取您关注的用户
  2. 按他们的“lastPosted”时间排序(因此您将首先获得最近发布的用户)

由于follower/following子集合只包含对完整用户文档的引用,而不是完整文档本身,因此不像只查询以下子集合那么容易。


这是我尝试过的:

database
.collection('users')
.doc(myUid)
.collection('following')
.get()
.then(followings => {
  database
  .collection('users')
  .orderBy('lastPosted', 'desc')
  .where('uid', '==', following[0] || following[1] ...)
})

这不起作用。我也想过这个:

database
.collection('users')
.orderBy('lastPosted', 'desc')
.where(myUid exists in their followers subcollection)

我不确定从这里去哪里,或者 Firestore 是否允许这样做。

【问题讨论】:

  • 不要描述你的数据库的样子,而是添加它的截图。
  • 请同时添加您的文档内容以查看您要过滤的属性。
  • @AlexMamo 已编辑文档结构
  • 请截图。

标签: firebase google-cloud-firestore


【解决方案1】:

见:

逻辑或查询。在这种情况下,您应该为每个 OR 条件创建一个单独的查询,并在您的应用中合并查询结果。

【讨论】:

  • Firebase 真的没有 SQL 中的 IN 等效项吗?
  • firebase.google.com/docs/firestore/query-data/queries。 where() 方法接受三个参数:要过滤的字段、比较操作和值。比较可以是 、>= 或 array_contains。和集合组查询。
  • 所以这不是。奇数。
猜你喜欢
  • 1970-01-01
  • 2020-02-02
  • 2013-07-08
  • 2017-07-11
  • 2023-01-13
  • 2021-11-13
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
相关资源
最近更新 更多