我有一个流,它从我的Firestore数据库中获取数据,并根据最新消息对它们进行排序。问题是流没有对它们进行正确排序。基本上它只获取一次数据,如果我添加一条新消息,它不会显示在顶部。知道为什么吗?
以下是我的查询:流: Stream<List<RoomsListModel>>? chats;
查询:
@override
void initState() {
chats = FirebaseFirestore.instance
.collection("rooms")
.where("users", arrayContains: userId)
.where("latestMessage", isNull: false)
.orderBy("latestMessage")
.orderBy("latestMessageTime", descending: true)
.snapshots()
.asyncMap((events) =>
Future.wait([for (var event in events.docs) generateRoom(event)]));
super.initState();
}
显然,在Firestore中,您不能执行"isNull"然后订购另一个值。
是的,你可以。如果Firestore中的字段持有null值(null是受支持的数据类型),则可以对其进行查询。除此之外,当且仅当创建索引时,还可以按其他字段对结果排序。
找到了一个解决方案:所以显然在firestore中你不能做一个条件查询,如"isNull"然后订购另一个值。因此,我找到了一个解决方案:我只是将条件查询更改为&;latestmessagetime &;