Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取Firebase数据库中的最后一个节点_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 获取Firebase数据库中的最后一个节点

Android 获取Firebase数据库中的最后一个节点,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想从我的Android中获取firebase数据库中添加的最后一个节点中的项。您可以在下图中看到,我不确定如何获取特定节点,因为unique key是由Firebase创建的。如何在内部引用自动创建的节点和子节点?非常感谢 最后一个节点 试试这个: DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); Query lastQuery = databaseReference.chi

我想从我的Android中获取firebase数据库中添加的最后一个节点中的项。您可以在下图中看到,我不确定如何获取特定节点,因为unique key是由Firebase创建的。如何在内部引用自动创建的节点和子节点?非常感谢

最后一个节点

试试这个:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
Query lastQuery = databaseReference.child("mp").orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String message = dataSnapshot.child("message").getValue().toString();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Handle possible errors.
    }
});

希望这有帮助

我更喜欢通过对象写入和检索数据。 我的对象是POJO

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot data : dataSnapshot.getChildren()) {
        MyObject myObject = data.getValue(MyObject.class);
        Log.i(TAG, data.getKey() + " = " + myObject.toString());
    }
}
这可能会奏效:

DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("mp");
Query query = db.orderByKey().limitToLast(1);
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot child: dataSnapshot.getChildren()) {
            Log.d("User key", child.getKey());
            Log.d("User val", child.child("message").getValue().toString());
        } 
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // TODO: Handle errors.
    }
});

console.log('last messages',messages[messages.length-1])

将该行更改为以下内容:
String message=dataSnapshot.child(“message”).getValue().toString()@koceeng对不起!我忘了,你完全正确。我改变了答案!它起作用了!!我不得不将我的代码从orderByChild()更新为orderByKey(),以获得听到@Billyjoker的真好!下面是firebase数据库的一个好例子