【问题标题】:Firebase Realtime Database Overrides my Data at a location even when I use .push() method即使我使用 .push() 方法,Firebase 实时数据库也会在某个位置覆盖我的数据
【发布时间】:2022-01-11 05:44:00
【问题描述】:

即使我使用 .push() 方法,Firebase 实时数据库也会在某个位置覆盖我的数据。我对写入 Firebase 实时数据库的一点具体知识是,写入 Firebase 实时数据库可以通过几种方式完成。其中最突出的两个是

  1. set() 和 2. push() 方法。

长话短说,push() 用于为要写入的数据创建一个新密钥,并将数据添加到节点。

很好,firebase 在我以前的项目中一直与我合作,但在这方面,我不知道发生了什么。我尝试了不同的 push 和 set 组合来实现我的目标,但到目前为止没有任何进展。

在下面的代码中,我想要实现的是两件事,只写一次位置chatUID,消息和时间,但在同一节点“firebaseGeneratedId1”下分别写入'-MqBBXPzUup7czdG2xCI' ->

下面是一个更好的结构。

帮助代码。谢谢。

更新

这是我的代码 作者参考

_listeningMsgRef = _msgDatabase
.reference()
    .child('users')
    .child(userId)
    .child('chats')
    .child(chatUIDConcat);

当用户点击 sendMessage 时,这里是调用的函数

void sendMessage() {
    _messageController.clear();
    var timeSent = DateTime.now().toString();

    //Send
    Map msgMap = {
        'message': msg,
        'sender': userId,
        'time': timeSent,
        'chatUID': chatUIDConcat
    };

    //String _key = _listeningMsgRef.push().key;

    _listeningMsgRef.child(chatUIDConcat).set().whenComplete(() {
        SnackBar snackBar = const SnackBar(content: Text('Message sent'));
        ScaffoldMessenger.of(context).showSnackBar(snackBar);
        DatabaseReference push = _listeningMsgRef.child(chatUIDConcat).push().set(msgMap);
    });
}

关于sendMessage函数的思路,就是写

chatUID:"L8pacdUOOohuTlifrNYC3JALQgh2+q5D38xPXVBTwmwb5Hq..."
message: "I'm coming"
newMessage: "true"
sender: "L8pacdUOOohuTlifrNYC3JALQgh2" 

完成后,在用户节点下推送新节点。

【问题讨论】:

  • 请编辑您的问题以显示未按您期望/希望的那样工作的代码。这样更有可能有人可以帮助解释代码的作用,以及如何让它做你想做的事情。
  • 对于迟到的回复,我深表歉意。 Stackoverflow 让我在尝试格式化我的代码时感到很痛苦。

标签: firebase flutter firebase-realtime-database


【解决方案1】:

当您在其下写入任何数据时,Firebase 实时数据库中的路径会自动创建,并在您删除它们下的最后一个数据时被删除。

因此您无需先为聊天室创建节点。相反,当您使用 _listeningMsgRef.child(chatUIDConcat).push().set(msgMap) 将第一条消息写入其中时,它会自动创建

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 1970-01-01
    • 2016-12-21
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多