4

我试图弄清楚为什么会出现此错误

FirebaseError:提供给 Query.startAt() 的参数过多。参数的数量必须小于或等于 Query.orderBy() 子句的数量

使用此代码:

const query = firebase
  .getDatabase()
  .collection("users")
  .where("premium", "==", true) // get premium users
  .where("totalPosts", ">", 0); // that have posted some music


...

return query
    .startAt(0)
    .limit(1)
    .get()
    .then((snapshot) => {
          ...
    );

如您所见,我正在尝试获取发布了一些音乐的高级用户。我使用的是 where 和 startAt 子句,而不是 orderBy。

我究竟做错了什么?

谢谢!

4

1 回答 1

5

仔细阅读错误信息:

参数的数量必须小于或等于 Query.orderBy() 子句的数量

您的代码根本没有显示任何 orderBy 子句,因此本例中的数字为 0。但是您为startAt(). 具体来说,您实际上应该提供一个 orderBy 子句。它必须与您的范围查询的字段匹配:

const query = firebase
  .getDatabase()
  .collection("users")
  .where("premium", "==", true) // get premium users
  .where("totalPosts", ">", 0)  // that have posted some music
  .orderBy("totalPosts")

然后,您的分页应该重复完全相同的查询,只是这次用 startAt 告诉它在哪里接:

return query.startAt(0);
于 2020-10-04T19:39:50.783 回答