如何在firebase realtime android中的唯一密钥中添加额外的子节点?
我想把姓氏连同全名和学生证一起放在唯一的钥匙里。我被卡住了,这可能是我最后的选择。我不知道在编码中该怎么做。你的回答肯定会大有帮助。非常感谢你如何在firebase realtime android中的唯一密钥中添加额外的子节点?,android,firebase,firebase-realtime-database,insert,Android,Firebase,Firebase Realtime Database,Insert,我想把姓氏连同全名和学生证一起放在唯一的钥匙里。我被卡住了,这可能是我最后的选择。我不知道在编码中该怎么做。你的回答肯定会大有帮助。非常感谢你 { "Students" : { "-Ma9R58DvoFMkLqukMmk" : { "fullname" : "Juan Capistrano Dela Cruz", "studId" : "18-l
{
"Students" : {
"-Ma9R58DvoFMkLqukMmk" : {
"fullname" : "Juan Capistrano Dela Cruz",
"studId" : "18-ln-0001"
},
"-Ma9TttvUqShhYjD-q_5" : {
"fullname" : "Maria Acosta Gomez",
"studId" : "18-ln-0002"
},
"-Ma9Ub__33IsWEFDbitu" : {
"fullname" : "David Orosco Villar",
"studId" : "18-ln-0003"
},
"-Ma9ZI_FvEgutnSvsSrU" : {
"fullname" : "Ara Quizon Diaz",
"studId" : "18-ln-0006"
},
"-MaBPU-fsEInFUGWft_n" : {
"surName" : "Diaz"
}
}
}
DatabaseReference数据库引用=
FirebaseDatabase.getInstance().getReference();
字符串userId=databaseReference.child(“学生”).push().getKey();
字符串姓氏=snameInput.getText().toString();
HashMap HashMap=新的HashMap();
hashMap.put(“姓氏”,姓氏);
databaseReference.child(“学生”).child(userId).setValue(hashMap).addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
Toast.makeText(PersonalData.this,“姓氏更新”,Toast.LENGTH_SHORT.show();
}
});
如果您知道要更新的节点的学生ID,则可以采取两步流程:
Query query = databaseReference.child("Students").orderByChild("studId").equalTo("18-ln-0002");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot resultSnapshot) {
for (DataSnapshot studentSnapshot: resultSnapshot.getChildren()) {
studentSnapshot.getRef().child("surname").setValue("Cortez");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
但是,一般来说,如果您的学生ID已经是唯一的,那么使用这些ID作为
Students
下节点的键就更有意义了。因此,在这种情况下,您将添加一个学生,其中包含:
HashMap hashMap = new HashMap();
hashMap.put("fullname", "Maria Acosta Gomez");
databaseReference.child("Students").child("18-ln-0002").setValue(hashMap);
然后,更新它们将非常简单:
databaseReference.child("Students").child("18-ln-0002").child("surname").setValue("Cortez");
或者,如果要使用hashmap:
HashMap hashMap = new HashMap();
hashMap.put("surName", snameInput.getText().toString());
databaseReference.child("Students").child("18-ln-0002").updateChildren(hashMap);
您能否编辑您的问题以显示:1)数据库中的数据结构(如JSON文本,请不要截图)。您可以通过单击溢出菜单中的“导出JSON”链接来实现这一点(⠇) 关于您的。2)您已经尝试过的代码,或者您尝试添加此属性的上下文。我希望您能帮助我,先生,谢谢。我尝试过您的解决方案,但它没有解决我的问题。我的代码流程是,您可以添加新学生的编号和全名。新生名单会显示出来。之后,如果单击一个列表,下一个窗口将添加用户的其他信息。这就是为什么我需要添加姓氏,但它不能转到相同的唯一键。请编辑您的问题以显示您对我共享的代码所做的操作。我建议你阅读,学习如何使它成为我们最可能的帮助。嘿@LeonicaCortez。这里有进一步的更新吗?
HashMap hashMap = new HashMap();
hashMap.put("surName", snameInput.getText().toString());
databaseReference.child("Students").child("18-ln-0002").updateChildren(hashMap);