如何知道给予firebase数据的随机id

时间:2016-07-05 11:52:02

标签: android firebase firebase-realtime-database

我的问题是我在保存数据时无法检索Firebase生成的随机密钥(我不得不使用该随机密钥),例如

enter image description here

我尝试使用dataSnapshot.getKey(),但它不起作用,任何帮助都将受到高度赞赏。提前致谢

4 个答案:

答案 0 :(得分:5)

根据您的问题,您可以使用此:

对于Android:

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("posts");
String key =  myRef.push().getKey();           //this returns the unique key generated by firebase

myRef.child(key).child("author").setValue("gracehop");//this creates the reqs key-value pair
myRef.child(key).child("title").setValue("Announcing COBOL");//this creates the reqs key-value pair

对于Web Dev:

var messageListRef = firebase.database().ref('posts');
var newMessageRef = messageListRef.push();
newMessageRef.set({
 'author': 'gracehop',
 'title': 'Announcing COBOL'
});

答案 1 :(得分:0)

如果你想检索随机密钥,那么你应该使用addChildEventValueListerner,因为它会逐个为你的孩子提供帖子节点。

 FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
 DatabaseReference mref = firebaseDatabase.getReference();
 mref.child("posts").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
              if (dataSnapshot.hasChildren()) {
                 String value = dataSnapshot.getValue(String.class);
              }

        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

答案 2 :(得分:0)

如果您知道任何字段的数据,请说您知道作者的姓名,那么您可以检索密钥/密钥(如果多个作者具有相同的名称)。这里非常清楚地描述:https://stackoverflow.com/a/38232280/5129997

答案 3 :(得分:-1)

你可以这样做

String key = ref.push().getKey();
ref.child(key).setValue(post);

希望这能回答你的问题:)

Firebase - Save Data on Android