首页 > 解决方案 > 如何使用 JavaScript SDK 或 React Native Firebase 有条件地向 Firestore 查询添加条件?

问题描述

为了处理无限滚动,我创建了一个根据所需行为向查询添加条件的函数:

  const queryDocs = async (behavior: string = 'start', limit: number = 25) => {
    let augmentedQuery: Query<DocumentData> | CollectionReference<DocumentData> = query
    try {
      if (behavior === 'start' || behavior === 'limited') {
        augmentedQuery = augmentedQuery.limit(limit)
      }
      if (behavior === 'next' && lastItem) {
        augmentedQuery = augmentedQuery.limit(limit).startAfter(lastItem)
      }
      const snapshot = await augmentedQuery.get()
      if (behavior === 'start' || behavior === 'next') {
        setLastItem(snapshot.docs[snapshot.docs.length - 1])
      }
      return snapshot
    } catch (error) {
      throw functionError(error, 'queryDocs', [behavior, limit], 'useCollection')
    }
  }

我收到以下错误:

在模块 useCollection 中的 queryData("start",1) 上:尝试分配给只读属性。

我们可以采用先前的查询并添加 .where 或 .limit 吗?

是否有处理条件查询的解决方案?

谢谢

编辑:正如 Doug 在讨论中所说,完全有可能像这样链接查询。该错误来自另一个来源。这段代码被放入一个共享包中,该包从 TypeScript 重新编译为 ES6,然后在 React Native 中使用。将所有代码合并到 React Native 目录后,错误发生了变化。我有一个请求创建一个带有链接的复合索引,这很简单。

标签: reactjstypescriptfirebasereact-nativegoogle-cloud-firestore

解决方案


推荐阅读