我想在查询中检索每个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);
答案 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);