如何在firestoreConnect中合并两个firestore查询“ where”?

时间:2019-07-31 19:06:57

标签: reactjs firebase redux react-redux google-cloud-firestore

我正在尝试创建查询以获取其中的userId等于当前userId或当前userId等于contributorsId的Firestore集合/文档。

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 个答案:

答案 0 :(得分:0)

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

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

还要在将等号运算符(==)与范围或array-contains子句(<,<=,>,> =或array-contains)一起使用时,确保创建复合索引

在此处了解如何创建一个 https://firebase.google.com/docs/firestore/query-data/indexing