如何获取Firebase数据库中项目的最大ID?

时间:2016-10-16 18:11:43

标签: android firebase firebase-realtime-database

我的数据库: enter image description here

我创建了这样的新项目:

mFirebaseDatabase.getReference(Api.CREDITS).child(String.valueOf(item.getId())).setValue(item);

但是当我创建一个新项目时,我需要设置他的ID ...如何确定Firebase列表中项目的最后ID?

1 个答案:

答案 0 :(得分:1)

最简单的方法很可能:

var latest = ref.child("credits").orderByKey().limitToLast(1);
latest.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            String latestKey = childSnapshot.getKey();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.w(TAG, "onCancelled", databaseError.toException());
    }
})

但这会导致以下问题:

  • 当用户没有网络连接时,此操作无效
  • 当多个用户尝试(几乎)同时添加孩子时

这是Firebase建议不要使用此类连续数字ID并使用推送ID的众多原因之一。

阅读documentation on dealing with lists和此博文:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html