作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在我的 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/
我是一名优秀的程序员,十分优秀!