微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FLUTTER, FIRESTORE :我有一个流构建器,它从集合中的所有文档中返回某个字段..如何添加查询?

如何解决FLUTTER, FIRESTORE :我有一个流构建器,它从集合中的所有文档中返回某个字段..如何添加查询?

我有一个名为 todo 的集合,todo 中的每个文档都包含以下字段:task、boolean isDone、user_id 和 task_id。我的应用程序中的每个用户都有一个 ID,所以我只想检索他们 id 的任务。我有从所有文档中检索任务字段的代码,但我想查询集合,以便我只检索 user_id=docid..docid 是我知道的变量的任务。

body: StreamBuilder(
          stream: FirebaseFirestore.instance.collection('todo').snapshots(),builder: (context,snapshot) {
            return ListView.builder(
                itemCount: snapshot.data.docs.length,itemBuilder: (context,index) {
                  DocumentSnapshot course = snapshot.data.docs[index];
                  return ListTile(title: Text(course['task']));
                });
          },)

所以我需要帮助添加一个查询。我认为我不能再使用索引了,尽管我不确定。 我是 Flutter 和 Firestore 的新手,所以所有 Streambuiler 和 Futurebuilder 的东西还没有被点击。如果有任何易于理解的参考文献,请 lmk。

解决方法

您可以按照 documentation 中的说明使用任何 query,只需将其添加到您的 StreamBuilder 中,如下所示:

body: StreamBuilder(
          stream: FirebaseFirestore.instance.collection('todo').orderBy('timestamp')
  .limitToLast(2).snapshots(),builder: (context,snapshot) {
            return ListView.builder(
                itemCount: snapshot.data.docs.length,itemBuilder: (context,index) {
                  DocumentSnapshot course = snapshot.data.docs[index];
                  return ListTile(title: Text(course['task']));
                });
          },)

您还可以使用 where 和所有其他查询。 StreamBuilder 基本上只是一个语法助手,可帮助您在使用实时流时避免处理状态。如果您没有它,则需要在小部件的 init 覆盖中初始化流,并在每次流更改时更改局部变量的状态。使用 StreamBuilder 可以避免这种情况并获得更清晰的代码。如果您不想,您也不需要将无状态小部件转换为有状态小部件。

您在 query 参数中使用的 firestore stream 与在 decumentation 中使用的完全相同,因此无论您是单独使用它还是在 StreamBuilder 中使用它,您都可以遵循它。

,

您可以像这样添加查询。

stream: FirebaseFirestore.instance
            .collection('todo')
            .where('user_id',isEqualTo: docid)
            .snapshots(),

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。