我想做这样的事情:假设有5个聊天室,用户可以通过按下相应的按钮进入任何聊天室进行聊天。因此,应该只向他显示该房间的聊天,而不是整个聊天。这些聊天记录应该存储在Firebase数据库中的哪个引用中,以便用户每次进入房间时,只显示该房间的聊天记录?
我想的一种方法是生成时间戳,并将聊天记录存储在Firebase数据库中,然后从那里获取聊天记录,但当我尝试这样做时,每次都会生成一个新的时间戳,而之前在数据库中存储聊天记录的时间戳正在丢失。
下面是我是如何生成时间戳的:
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();下面是我如何在它下面存储聊天:
mFirebaseDatabaseReference.child("chatmodel").child(ts).setValue(model);我该如何实现这一点?请帮帮我。
发布于 2016-10-05 04:49:05
要实现这一点,我建议您重新构建您的数据库。避免过多的嵌套,并像这样发布聊天室/聊天请求:
因此,在这里您可以看到两个聊天室,它们使用.push()在发布请求时生成的唯一ids。带有密钥uniqueCharacter.的请求有一个唯一的标识符
{
"-HFSSFG5647DDHD" : {
"name" : "Some Name",
"someOtherinfo" : "test",
"timestamp" : 12443567,
"uniqueCharacter" : "Request2"
},
"-YYTH6637FRFSHt5" : {
"name" : "Some other name",
"someOtherinfo" : "test",
"timestamp" : 12443567,
"uniqueCharacter" : "Request3"
}
}现在,另一个用户看到了这两个请求,一旦他单击了某个,您就会获得在推送时生成的唯一id,并使用如下过滤器为该特定推送id创建一个单独的聊天室:
如果用户选择request3,则您的数据库引用将为:
databaseRef.orderByChild("uniqueCharacter").equalTo("Request3");这将为您提供访问特定推送id的权限,您可以在所有选择此推送id的用户之间共享该id,并为所有用户创建一个具有相同id的公共聊天室。
希望你能在这里得到实现你想要的东西的基本想法。
这不是一个生产示例,而只是一个基本的示例,让您了解实现目标的更好方法。
https://stackoverflow.com/questions/39859960
复制相似问题