如果我想在名为(messages)的实时数据库中推送数据库节点:
它有这样的结构:
<Helmet
title="ABC"
meta={[
{ name: "ABC", content: "ABC" }
]}
links={
rel='icon',
type='image/png',
sizes='16x16',
href={require('favicon.ico')}
}
/>
现在,如果我想推送消息/ current_id / user_id
然后重要
如果我这样做:
messages
|
current_id
|
user_id
|
push_id1
|
push_id2
或者这个:
my_ref= FirebaseDatabase.getInstance().getReference().child("messages").child(current_id).child(user_id).push();
如果是的话。那它有什么不同?
修改
所以我将根据franks建议解释我如何使用我的代码
所以我从第一个片段坦克建议得到推送ID:
my_ref= FirebaseDatabase.getInstance().getReference().push();
然后我这样做了多个更新2个位置
第一个位置:messages / current_id / user_id
第二个位置:messages / user_id / current_id
String push_id= my_ref.getkey();
我注意到在位置2处,推送ID未正常排序(未按顺序排序)。
但是在位置1,他们正常排序。
不要问我为什么要拆分多路径更新.....出于安全规则的原因。
答案 0 :(得分:1)
在任何ADComputer
上拨打ref.push()
基本上可以做两件事:
根据客户的当前时间戳和大量随机性创建一个统计上保证唯一的新ID,以使其唯一。
创建一个新的DatabaseReference
指向DatabaseReference
。
此
ref.child(newId)
在 my_ref= FirebaseDatabase.getInstance().getReference().child("messages").child(current_id).child(user_id).push();
下创建对新位置的引用。
此:
/messages/$current_id/$user_id
创建对根目录下新位置的引用。
由于您需要my_ref= FirebaseDatabase.getInstance().getReference().push();
下的新子项,因此您需要第一个代码段。
请注意,两个片段实际上都没有写入任何数据,这需要您拨打/messages/$current_id/$user_id
或setValue(...)
。