【问题标题】:How do I generate a unique key for each message in Realtime Database?如何为实时数据库中的每条消息生成唯一密钥?
【发布时间】:2021-08-05 03:13:08
【问题描述】:

我正在开发一个简单的群聊应用程序。实时聊天将通过 Firebase 实时数据库完成,一段时间后消息将被移动到 Firestore。

这是我为 RTDB 考虑的结构。 groupID 将是根 DB 节点之后的第一个节点。 groupID 节点下的下一个子节点将是每个用户发送的消息。此节点将包含 createdate、实际消息、用户的 uid 和用户的用户名。

但是,我不确定如何生成唯一密钥来代替下面的 MessageKey 和 MessageKey2。如何生成要插入其中的独特内容?

注意:我尝试从 database.push() 获取密钥,但它给了我这个:https://APPNAME-cf4da.firebaseio.com/-M_hwyb15XnNDjGDaO7X

我是否只需要剥离该根节点以将其用作 MessageKey?

【问题讨论】:

标签: java android firebase kotlin firebase-realtime-database


【解决方案1】:

查看 URL,是否将密钥添加到 db 的根目录而不是组 ID 节点内部?如果是,那么请确保您的数据库引用是正确的。在你的情况下:

String key = mDatabase.child("groupId").push().getKey()
mDatabase.child("groupId").child(key).setValue({}); //Set the required value

@Louis 在 cmets 中建议的其他选项是使用 UUID,就像这样。

String key =  UUID.randomUUID().toString()
mDatabase.child("groupId").child(key).setValue({}); //Set the required value.

如果仍有问题,请在 cmets 中告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2010-09-08
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2013-07-18
    相关资源
    最近更新 更多