如何在数据库中检索唯一的id键

时间:2017-12-19 19:02:48

标签: java android firebase-realtime-database

我想在查询中检索每个Firebase新帖子的唯一ID,并尝试使用此代码但不起作用并提供错误的ID

final DatabaseReference newPost = mDatabase.push();
final String id = mDatabase.push().getKey();


mDatabaseUser.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        newPost.child("title").setValue(title_val);
        newPost.child("id").setValue(id);

1 个答案:

答案 0 :(得分:1)

首先看起来很可疑的是:

final DatabaseReference newPost = mDatabase.push();
final String id = mDatabase.push().getKey();

每次拨打push()时,都会生成一个新位置。因此,如果您想捕获新帖子的密钥/ ID,您应该这样做:

final DatabaseReference newPost = mDatabase.push();
final String id = newPost.getKey();

我也不完全确定听众的意图。如果您只想设置新帖子的两个属性,则不需要监听器。只是做:

final DatabaseReference newPost = mDatabase.push();
final String id = newPost.getKey();
newPost.child("title").setValue(title_val);
newPost.child("id").setValue(id);

或更好:

final DatabaseReference newPost = mDatabase.push();
final String id = newPost.getKey();
Map<String, Object> values = new HashMap<>();
values.put("title", title_val);
values.put("id", id);
newPost.setValue(values);