FLUTTER,FIRESTORE:我有一个 streambuilder,它 returns 集合中所有文档的某个字段..如何添加查询?
FLUTTER, FIRESTORE : I have a streambuilder that returns a certain field from all the documents in the collection..how do I add query?
我有一个名为 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
基本上只是一个语法助手,可以帮助您在使用实时流时避免处理状态。如果您没有它,则需要在 Widget 的 init
覆盖中初始化流,并在每次流更改时更改局部变量的状态。使用 StreamBuilder
您只需避免这种情况并获得更清晰的代码。如果您不想,也不需要将无状态小部件转换为有状态小部件。
您在 stream
参数中使用的 firestore query
与在文档化中使用的完全相同,因此无论您是单独使用它还是在 [=12= 中使用它,您都可以遵循它].
您可以像这样添加查询。
stream: FirebaseFirestore.instance
.collection('todo')
.where('user_id', isEqualTo: docid)
.snapshots(),
我有一个名为 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
基本上只是一个语法助手,可以帮助您在使用实时流时避免处理状态。如果您没有它,则需要在 Widget 的 init
覆盖中初始化流,并在每次流更改时更改局部变量的状态。使用 StreamBuilder
您只需避免这种情况并获得更清晰的代码。如果您不想,也不需要将无状态小部件转换为有状态小部件。
您在 stream
参数中使用的 firestore query
与在文档化中使用的完全相同,因此无论您是单独使用它还是在 [=12= 中使用它,您都可以遵循它].
您可以像这样添加查询。
stream: FirebaseFirestore.instance
.collection('todo')
.where('user_id', isEqualTo: docid)
.snapshots(),