推送时获取 Firebase UID,然后在 Java 中使用给定的 UID 再次推送

Get Firebase UID when push, then push again with the given UID in Java

提问人:H3lltronik 提问时间:7/11/2019 最后编辑:Frank van PuffelenH3lltronik 更新时间:7/11/2019 访问量:155

问:

嗨,我有以下用 Javascript 编写的代码,我需要用 Java 做同样的事情,这是代码:

firebase.database().ref('notificacionesAdmin/').push(notificacion).then(res => {
                    firebase.database().ref('notificacionesAdmin/' + res.key).child('idNotificacion').set(res.key)           

这是一个简单的推送,但它会等到第一次推送完成,然后它再次推送到最后一个推送的子节点内,并在其中写入节点
的 UID 如下所示:

uniqueid :{
    idNotificacion: uniqueid
    ....
}


我尝试做这样的事情,但它没有返回任何 UID,或者我只是遗漏了一些东西

database = FirebaseDatabase.getInstance().getReference("notificacionesAdmin/");
database.push().setValue(notificacion).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        // How to get the pushed child uid?
    }
});

感谢您的帮助

javascript java android firebase firebase-realtime-database

评论


答:

1赞 Nurbol 7/11/2019 #1

Firebase 再次返回带有随机键的对象。因此,可以像这样获取密钥:databaseRef.push()DatabaseReference

database = FirebaseDatabase.getInstance().getReference("notificacionesAdmin/");
final String key = database.push().getKey();
database.child(key).setValue(notificacion).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        // Here use the key!
    }
});

评论

0赞 Frank van Puffelen 7/11/2019
事实上,使用这种方法通过一次调用来写入两个位置是相当普遍的,如下所示:firebase.googleblog.com/2015/09/...updateChildren(...)