Flutter Firestore 查询中是否可以使用通配符?
Is wildcard possible in Flutter Firestore query?
我的目标是从路径 'chat/$chattype/room/{roomID}/message' 流式传输数据库中的所有消息,我需要在其中查询所有包含文档的消息,其中的字符串中包含 'user1',而无需明确指定房间编号。似乎无法让它与通配符一起工作,但是..
是否可以从 say: 'chat/$chattype/room/' 查询?
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: _firestore
.collection('chat/$chattype/room/{roomID}/message')
.where("reciever", isEqualTo: "user1")
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
...
Firestore 查询不支持任何通配符。您必须能够构建集合的完整路径才能对其进行查询。
您可能还想查看 collection group queries,它可以让您查询任何子集合中具有相同名称的所有文档。您也许可以使用“消息”上的集合组查询来查询 all 聊天室的 all 聊天类型的所有消息,应用过滤器如果需要的话。
查询多个集合的唯一方法是使用 collection group query,它查询具有给定名称的所有集合。
所以:
_firestore
.collectionGroup('message')
.where("reciever", isEqualTo: "user1")
.snapshots(),
另请参阅 collectionGroup()
的 Flutter 参考文档。
我的目标是从路径 'chat/$chattype/room/{roomID}/message' 流式传输数据库中的所有消息,我需要在其中查询所有包含文档的消息,其中的字符串中包含 'user1',而无需明确指定房间编号。似乎无法让它与通配符一起工作,但是.. 是否可以从 say: 'chat/$chattype/room/' 查询?
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: _firestore
.collection('chat/$chattype/room/{roomID}/message')
.where("reciever", isEqualTo: "user1")
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
...
Firestore 查询不支持任何通配符。您必须能够构建集合的完整路径才能对其进行查询。
您可能还想查看 collection group queries,它可以让您查询任何子集合中具有相同名称的所有文档。您也许可以使用“消息”上的集合组查询来查询 all 聊天室的 all 聊天类型的所有消息,应用过滤器如果需要的话。
查询多个集合的唯一方法是使用 collection group query,它查询具有给定名称的所有集合。
所以:
_firestore
.collectionGroup('message')
.where("reciever", isEqualTo: "user1")
.snapshots(),
另请参阅 collectionGroup()
的 Flutter 参考文档。