首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将打开的聊天室的聊天内容存储在Firebase中的唯一位置并进行检索?

如何将打开的聊天室的聊天内容存储在Firebase中的唯一位置并进行检索?
EN

Stack Overflow用户
提问于 2016-10-05 03:08:51
回答 1查看 357关注 0票数 0

我想做这样的事情:假设有5个聊天室,用户可以通过按下相应的按钮进入任何聊天室进行聊天。因此,应该只向他显示该房间的聊天,而不是整个聊天。这些聊天记录应该存储在Firebase数据库中的哪个引用中,以便用户每次进入房间时,只显示该房间的聊天记录?

我想的一种方法是生成时间戳,并将聊天记录存储在Firebase数据库中,然后从那里获取聊天记录,但当我尝试这样做时,每次都会生成一个新的时间戳,而之前在数据库中存储聊天记录的时间戳正在丢失。

下面是我是如何生成时间戳的:

代码语言:javascript
复制
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();

下面是我如何在它下面存储聊天:

代码语言:javascript
复制
mFirebaseDatabaseReference.child("chatmodel").child(ts).setValue(model);

我该如何实现这一点?请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2016-10-05 04:49:05

要实现这一点,我建议您重新构建您的数据库。避免过多的嵌套,并像这样发布聊天室/聊天请求:

因此,在这里您可以看到两个聊天室,它们使用.push()在发布请求时生成的唯一ids。带有密钥uniqueCharacter.的请求有一个唯一的标识符

代码语言:javascript
复制
{
      "-HFSSFG5647DDHD" : {
        "name" : "Some Name",
        "someOtherinfo" : "test",
        "timestamp" : 12443567,
        "uniqueCharacter" : "Request2"
      },
      "-YYTH6637FRFSHt5" : {
        "name" : "Some other name",
        "someOtherinfo" : "test",
        "timestamp" : 12443567,
        "uniqueCharacter" : "Request3"
      }
    }

现在,另一个用户看到了这两个请求,一旦他单击了某个,您就会获得在推送时生成的唯一id,并使用如下过滤器为该特定推送id创建一个单独的聊天室:

如果用户选择request3,则您的数据库引用将为:

代码语言:javascript
复制
databaseRef.orderByChild("uniqueCharacter").equalTo("Request3");

这将为您提供访问特定推送id的权限,您可以在所有选择此推送id的用户之间共享该id,并为所有用户创建一个具有相同id的公共聊天室。

希望你能在这里得到实现你想要的东西的基本想法。

这不是一个生产示例,而只是一个基本的示例,让您了解实现目标的更好方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39859960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档