【问题标题】:Firebase Realtime Database: How to get the unique key after push().set()?Firebase 实时数据库:如何在 push().set() 之后获取唯一键?
【发布时间】:2021-02-28 10:41:19
【问题描述】:

在我的颤振代码中,下面是我将数据保存到 Firebase 实时数据库的操作

final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');

void _sendMessage({String messageText, String imageUrl}) async{
    await reference.push().set({
      'text': messageText,
      'imageUrl': imageUrl,
    });

  }

这会在数据库中生成以下结果

我需要在提交数据后立即检索生成的唯一密钥,但我该怎么做呢?

【问题讨论】:

    标签: firebase flutter firebase-realtime-database


    【解决方案1】:

    push() 方法返回一个DatabaseReference,所以你可以这样做:

    final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');
    
    void _sendMessage({String messageText, String imageUrl}) async {
        DatabaseReference newRef = reference.push();
        String newKey = newRef.key;
        await newRef.set({
          'text': messageText,
          'imageUrl': imageUrl,
        });
    
      }
    

    请注意,在调用push() 方法时,您会立即获得新的DatabaseReference:无需等待对异步set() 方法的调用完成。

    【讨论】:

    【解决方案2】:

    您可以使用不同的方法获取该 ID。首先,您可以获取下一个 id,并将项目推入其中。它看起来像这样:

    
    final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');
    
    void _sendMessage({String messageText, String imageUrl}) async{
    
        String newkey = reference.push().key; // That is your unique key!
    
       await reference.child(newkey).set({
          'text': messageText,
          'imageUrl': imageUrl,
        });
      }
    
    

    【讨论】:

      猜你喜欢
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 2023-02-02
      • 2016-11-30
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      相关资源
      最近更新 更多