android - 如何在 Firebase 数据库 Android 中添加新的 child

标签 android firebase firebase-realtime-database

我正在尝试在我的 Firebase Android 应用程序中使用 DatabaseReference 添加一个新的 child 。我在做:

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference() 
mDatabase.child("childToAdd").setValue(1);

我可以使用常规的 Firebase 引用来做到这一点,因为如果它不存在,它会将 child 添加到数据库中。
我怎样才能使用 DatabaseReference 来做到这一点?

编辑:感谢所有建议,但我在使用以下代码时遇到问题。当它进入 if block 时,它不会将数据推送到数据库中。

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");

参见 append to a list of data 部分在 Firebase 文档中。

关于android - 如何在 Firebase 数据库 Android 中添加新的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013089/

相关文章:

java - Firebase算子吗?

android - FirebaseListAdapter - 查询

android - 下载android 2.3.4 API

android - Proguard 与 gson 和 jackson 的问题

java - 如何在没有特定路径的情况下在子项下添加子项?

javascript - FieldValue.increment 不起作用,但添加 "operand"

java - Firebase 自动删除记录

java - Android N 要求 IDE 在 Ubuntu 15.04 中运行 Java 1.8 或更高版本

android - 高速公路 websockets Android 演示崩溃

ios - 从 Firebase 检索数据