如何在Firebase数据库Android中添加新的子项 [英] How to add new child in Firebase database Android

查看:405
本文介绍了如何在Firebase数据库Android中添加新的子项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在我的 Firebase Android应用程序中使用 DatabaseReference 添加新的子项。我在做:
$ b

  DatabaseReference mDatabase = FirebaseDatabase.getInstance()。getReference()
mDatabase.child( childToAdd)的setValue(1)。

我可以使用常规的 Firebase 参考,因为它会将子项添加到数据库,如果它不存在。

我怎么能这样做与 DatabaseReference

编辑:感谢所有的建议,但我有以下代码的问题。当它进入if块时,它不会将数据推送到数据库上。

https://gist.github.com/当我尝试这个旧的Firebase引用时,我得到错误代码11(用户代码从firebase runloop调用)和新的数据库引用我得到错误代码-3(PermissionDenied,即使我没有安全规则)。



更新:

我使用单个值事件侦听器来完成我想要的工作: 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);

请参阅追加到Firebase文档中的数据列表


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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆