如何将方法从 Firestore 转换为实时数据库

how to transform the method from Firestore to Realtime Database

我正在尝试将数据库从 firestore 转换为 firebase rtdb,通过教程我看到了以下代码:

  static Stream<List<Message>> getMessages(String idUser) =>
      FirebaseFirestore.instance
          .collection('chats/$idUser/messages')
          .orderBy(MessageField.createdAt, descending: true)
          .snapshots()
          .transform(Utils.transformer(Message.fromJson));

这是我更新的代码:

    static Stream<List<Message>> getMessages(String idUser) =>
  FirebaseDatabase.instance
      .ref()
      .child('chats/$idUser/messages')
      .onValue
      .map((message) =>
      message.snapshot.children.map((e) =>
          Message.fromJson(e.value as Map<String, dynamic>)).toList());

是否正确以及如何添加方法 orderBy,或者请与我分享与 firestore 具有相同值的正确代码,非常感谢!

Firebase 实时数据库仅支持升序,因此您可以将 .orderBy(MessageField.createdAt, descending: true) 从 Firestore 映射到实时数据库。

最接近的是:

FirebaseDatabase.instance
    .ref()
    .child('chats/$idUser/messages')
    .orderByChild(MessageField.createdAt)
    .onValue
    ...

然后在您的应用程序代码中反转结果。

另请参阅 querying Realtime Database 上的 FlutterFire 文档。