当前位置: 首页 > 知识库问答 >
问题:

如何在FireStoreConnect中组合两个firestore查询“where”?[副本]

澹台聪
2023-03-14

我试图创建一个查询来获取一个firestore集合/文档,其中userId等于当前userId,或者当前userId等于contributorsid。

export default compose(
  connect(mapStateToProps),
  firestoreConnect((props) => {
    if (!props.auth.uid) return []
    return [
      {
        collection: 'canvases',
        orderBy: ['createdAt', 'desc'],
        where: [
          ['userId', '==', props.auth.uid] || ['contributors', 'array-contains', props.auth.uid]
        ],
      }
    ]
  })
)(CanvasSelector);

我想让它给我所有陈述属实的文档。但它只返回第一个。如果我选择只包含其中一个查询(“where”),它们都会工作并返回正确的文档。

共有1个答案

越俊艾
2023-03-14

我认为您没有正确地传递查询,像这样尝试-

where: [
      ['userId', '==', props.auth.uid],
      ['contributors', 'array-contains', props.auth.uid]
],

另外,请确保在使用带有range或array-contains子句(<、<=、>、>=或array-contains)的相等运算符(==)时创建复合索引

 类似资料:
  • 问题内容: 由于ORFirestore中没有逻辑运算符,因此我尝试在本地合并2个单独的查询。 现在,我想知道如何保持结果的正确顺序。当我独立运行2个查询时,我无法明确地查询结果(至少不是我使用该orderBy方法从Firestore获取结果的顺序)。 我的想法是将第二个查询放在第一个查询的内部。这是一个坏主意的表现明智的选择吗? 问题答案: 要在本地合并2个单独的查询,建议您使用方法。您可以使用以

  • 问题内容: 我是Firestore的新手。我想通过使用ID按联接查询从其他集合中获取名称。我该怎么办? 这是一些样本集合。 我有两个集合。员工和部门。 我想查询员工集合,并想添加部门文档作为响应的一部分。这是我尝试获取的示例响应。 这是我获取员工数据的示例代码。 如何为该员工添加部门对象? 问题答案: Firestore没有联接查询。如果要合并两个文档中的数据,则必须分别查询它们,然后根据两个文档

  • 以这个结构为例: 我想执行一个查询,首先验证用户()是否等于参考值。如果是,我希望它验证数组()是否包含某个标记。 这是我到目前为止能找到的最接近的东西: 此代码是为在Firebase上部署函数开发的,每当我拥有的某个集合上出现onWrite事件时,它就会触发。 此外,如果有人知道一些关于Firestore的复合查询的好例子,我将不胜感激。我已经阅读了文档,并看到了Firebase团队解释Fire

  • -用户(顶级集合): ----user1(doc): --------pets(子集合): ----------pet1(doc) ----------pet2(doc) ---------pets(子集合): -----------pet3(doc) -------------pet4(doc) 如果我有一个IDS列表: 有没有一种方法可以做这样的事情,然后得到一个文档快照列表? 它适用于根集合

  • 我编写了一个查询,用于查找特定班级中某一性别的学生人数,但我无法找到一种方法来编写可以对两种性别执行相同操作的查询。我尝试编写两次查询(针对每个性别),然后使用UNION将它们组合起来,但也无法做到这一点。 查询# 1 结果: 查询#2 结果: 我希望输出如下,最好使用一个查询: 谢谢你。

  • 问题内容: 我有一个库存表,我想创建一个报告,以显示订购商品的频率。 “库存”表: 基本上,我需要将这两个查询结合在一起。 查询打印库存余额: 打印销售统计信息的查询 我认为某种JOIN可以完成这项工作,但我不知道如何将查询粘合在一起。 所需的输出: 这仅是示例。也许我将需要添加更多条件,因为有更多列。是否存在将多个查询组合在一起的通用技术? 问题答案: