我正在使用此代码来更新 Firebase 上的数据,但它会生成新的数据。我尝试了很多代码,除了最后一个字符之外,它使用相同的密钥制作新的代码。
我按照 Firebase 网站的推荐使用了这个,但它不起作用。我创建了一个新的,下次更新时:
Map<String, Object> childUpdate = new HashMap<>();
childUpdate.put("/masjeds/" + masjed.getId(), masjed.toMap());
reference.updateChildren(childUpdate);
这段代码做了同样的事情
final FirebaseDatabase database = FirebaseDatabase.getInstance();
masjeds = database.getReference("masjeds");
reference.child(masjed.getId()).setValue(masjed, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
// Toast.makeText(MyMasjedsActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Masjed 类是普通的 java 对象
public class Masjed {
private String userID;
private String id;
private String name;
private String address;
private String phone;
private boolean matloopEmam;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public boolean isMatloopEmam() {
return matloopEmam;
}
public void setMatloopEmam(boolean matloopEmam) {
this.matloopEmam = matloopEmam;
}
public Masjed(String name, String address, String phone) {
this.name = name;
this.address = address;
this.phone = phone;
}
public Masjed() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Map<String, Object> toMap() {
Map<String, Object> map = new HashMap<>();
map.put("name", name);
map.put("address", address);
map.put("phone", phone);
map.put("id", id);
map.put("userID", userID);
return map;
}
}
id是我假设的问题push.getkey并将其作为ID
然后使用push.setValue(masjed)将使用相同的密钥
事实证明,情况并不总是如此,当我使用它时,钥匙会发生变化,它不存在,因此它创建了一个新的钥匙,对我有帮助的答案是切斯特答案