如何在Firebase数据库Android中添加新的子项 [英] How to add new child in Firebase database Android
问题描述
我试图在我的 Firebase
Android应用程序中使用 DatabaseReference
添加新的子项。我在做:
$ b
DatabaseReference mDatabase = FirebaseDatabase.getInstance()。getReference()
mDatabase.child( childToAdd)的setValue(1)。
我可以使用常规的 Firebase
参考,因为它会将子项添加到数据库,如果它不存在。
我怎么能这样做与 DatabaseReference
?
编辑:感谢所有的建议,但我有以下代码的问题。当它进入if块时,它不会将数据推送到数据库上。
更新:
我使用单个值事件侦听器来完成我想要的工作: Firebase userRef = new Firebase(BASEURL +userData); Firebase userRef = new Firebase(BASEURL +userData);
$ b $ userRef.addListenerForSingleValueEvent(new ValueEventListener(){
@Override $ b $ public void onDataChange(DataSnapshot dataSnapshot){$ b $ if(dataSnapshot.child(user.getUid() ).getValue()== null){
userRef.child(user.getUid())。setValue(1);
}
}
@Override
public void onCancelled(FirebaseError firebaseError){
});
然而,数据库引用不允许我添加这样的值。
push()
来生成新数据的唯一键:$ b $ pre $ database $ DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference()
mDatabase.push ().setValue(1);
这会在列表末尾添加新的值。
结合 push()
和 child()
方法,您可以创建多个列表在数据库中的子元素:
mDatabase.child(numbers)。push()。setValue(1);
mDatabase.child(numbers)。push()。setValue(53);
mDatabase.child(numbers)。push()。setValue(42);
mDatabase.child(letters)。push()。setValue(a);
mDatabase.child(letters)。push()。setValue(z);
mDatabase.child(letters)。push()。setValue(c);
I'm trying to add a new child using the DatabaseReference
in my Firebase
Android app. I'm doing:
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference()
mDatabase.child("childToAdd").setValue(1);
I can do this with a regular Firebase
Reference as it would add the child to the database if it isn't there.
How could I go about doing this with DatabaseReference
?
Edit: Thanks for all the suggestions but I'm having issues with the following code. When it enters the if block it does not push the data onto the database.
https://gist.github.com/rounaksalim95/a5cba332400c6caf8320f15b0cbf06e8
When I try this with the old Firebase reference I get error code 11 (User code called from firebase runloop) and with the new database reference I get error code -3 (PermissionDenied even though I have no security rules).
Update:
I got it to do what I wanted to using a single value event listener:
Firebase userRef = new Firebase(BASEURL + "userData");
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child(user.getUid()).getValue() == null) {
userRef.child(user.getUid()).setValue(1);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
However database reference doesn't let me add values like this.
You'll need to call push()
to generate a unique key for the new data:
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference()
mDatabase.push().setValue(1);
This will append the new value at the end of the list.
By combining the push()
and child()
methods, you can create multiple lists of children in the database:
mDatabase.child("numbers").push().setValue(1);
mDatabase.child("numbers").push().setValue(53);
mDatabase.child("numbers").push().setValue(42);
mDatabase.child("letters").push().setValue("a");
mDatabase.child("letters").push().setValue("z");
mDatabase.child("letters").push().setValue("c");
See the section append to a list of data in the Firebase documentation.
这篇关于如何在Firebase数据库Android中添加新的子项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!