首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按最少的视图数查询Fi还原文档

按最少的视图数查询Fi还原文档
EN

Stack Overflow用户
提问于 2021-11-24 19:42:20
回答 2查看 155关注 0票数 0

我试图从我的消防局数据库中查询一组5条记录。每次客户端成功地查询5条记录时,文档上的每个记录的视图字段都会增加1。我基本上希望数据库中的所有记录都能在客户端获得平等的机会,因此应该查询视图值最低的记录。但是,以下查询的行为并不像预期的那样,因为我一直在获取相同的记录集,尽管查询的记录现在具有更高的视图值。降序设置为false的orderBy不是将集合排序为先列出最低值吗?

代码语言:javascript
复制
QuerySnapshot snapshot = await FirebaseFirestore.instance
    .collection('records')
    .where('city', isEqualTo: city)
    .where('views', isGreaterThan: -1)
    .orderBy('views', descending: false)
    .limit(5)
    .get();

snapshot.docs.forEach((element) async {
  Record record =
      Record.fromMap(element.data() as Map<String, dynamic>);

    await FirebaseFirestore.instance
        .collection('records')
        .doc(record.recordID)
        .update({'views': FieldValue.increment(1)});
  }
}

第一次查询后,文档id和查看日志:

e56a4c40-40e5-11ec-9a4b-b5164e53b334

  • I/flutter ( 3630):4

  • I/颤振( 3630):ecd328c0-40e6-11ec-a76a-cd0a98374153

  • I/flutter ( 3630):4

  • I/颤振( 3630):dc894420-40e3-11ec-a113-2d0055afb86b

  • I/flutter ( 3630):4

  • I/颤振( 3630):e3f554f0-40e4-11ec-a3ae-1f948418cef9

  • I/flutter ( 3630):4

F 219

Doc日志和视图第二个查询:

ecd328c0-40e6-11ec-a76a-cd0a98374153

  • I/flutter ( 3630):5

  • I/颤振( 3630):e56a4c40-40e5-11ec-9a4b-b5164e53b334

  • I/flutter ( 3630):5

  • I/颤振( 3630):dc894420-40e3-11ec-a113-2d0055afb86b

  • I/flutter ( 3630):5

  • I/颤振( 3630):e3f554f0-40e4-11ec-a3ae-1f948418cef9

  • I/flutter ( 3630):5

F 237

EN

回答 2

Stack Overflow用户

发布于 2021-11-25 15:46:19

我不知道是什么解释了这种行为,但是如果在orderBy之后删除降序参数,它就能工作。我不知道为什么降序参数会引起问题。

如果不提供任何内容,则orderBy('views')默认为降序参数的false

票数 1
EN

Stack Overflow用户

发布于 2021-11-25 22:43:56

看看orderBygetBy函数中的https://www.npmjs.com/package/firebase-firestore-helper道具

你应该能够做这样的事情:

代码语言:javascript
复制
db.getBy({ where: [{ city }, ['views' '>', -1]], orderBy: ['views', 'desc'] });

然后,在您的代码中,获得前5。

我不能百分之百地肯定这一点,但是limitorderBy之前就会执行。

这是一个问题,因为,就我所记得的(我可能错了),Firebase将这样工作:

首先,获取所有的视图>-1 elements

  • Finally,

  • ,然后只获取5个第一个

命令,并检索它们。

再说一遍:我不能百分之百肯定这件事,但我记得我和你有同样的问题。

如果有人说我错了,我就删除这个答案。

看看这里的东西,https://firebase.google.com/docs/firestore/query-data/order-limit-data

免责声明:我是这个图书馆的创造者。它有助于在Firebase Firestore (并添加缓存)中操作对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70102043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档