加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何在Firebase数据库Android中添加新子项

发布时间:2020-12-12 06:21:47 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试使用我的Firebase Android应用中的DatabaseReference添加一个新的孩子.我正在做: DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference() mDatabase.child("childToAdd").setValue(1); 我可以使用常规的Firebase参考来完成
我正在尝试使用我的Firebase Android应用中的DatabaseReference添加一个新的孩子.我正在做:
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference() 
mDatabase.child("childToAdd").setValue(1);

我可以使用常规的Firebase参考来完成此操作,因为它会将子项添加到数据库中(如果不存在).
我怎么能用DatabaseReference做这个呢?

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

https://gist.github.com/rounaksalim95/a5cba332400c6caf8320f15b0cbf06e8

当我使用旧的Firebase参考尝试此操作时,我得到错误代码11(从firebase runloop调用的用户代码),并且使用新的数据库引用,我得到错误代码-3(即使我没有安全规则,PermissionDenied).

更新:

我得到它做我想要使用单值事件监听器:

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) {

    }
});

但是数据库引用不允许我添加这样的值.

解决方法

您需要调用push()来为新数据生成唯一键:
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文档中的append to a list of data部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读