android - 如何更新 Firebase 实时数据库中的现有值?
问题描述
我想更新我的 Firebase 实时数据库中的现有值。我尝试了几种方法,但都没有奏效。有谁知道我该如何解决?如果它有用的话,我会附上数据库的结构以及我到目前为止编写的代码。在此先感谢大家
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference().child("users");
myRef.orderByChild("email").equalTo(email).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.getValue() != null) {
//loop through the keys
Map<String, Object> hashMap = new HashMap<>();
for(DataSnapshot datasnap : snapshot.getChildren()) {
if(datasnap.child("email").getValue().toString().equals(email)) {
hashMap.put("address", "TEST1");
myRef.child(email).updateChildren(hashMap).addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Object o) {
Toast.makeText(LocationActivity.this, "Data successfully update",
Toast.LENGTH_SHORT).show();
}
});
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
throw error.toException();
}
});
解决方案
您正在更新数据库中的错误位置,这意味着写入现在显示在屏幕截图中或被拒绝(您的代码无法处理)。
要更新address
您正在循环的子节点:
myRef.orderByChild("email").equalTo(email).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot datasnap : snapshot.getChildren()) {
datasnap.child("address").getRef().setValue("TEST1").addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Object o) {
Toast.makeText(LocationActivity.this, "Data successfully update",
Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
throw error.toException();
}
});
这里的关键变化是我调用getRef()
快照,以获取对数据库中特定位置的引用。
您会注意到我还删除了这两个条件,因为它们都对结果没有任何影响。
推荐阅读
- python - 是否有从 netCDF4 文件中提取文件路径的特定方法?
- android - 从 Visual Studio C++ proejct 为 android 创建共享对象 .so 文件
- python - 将双变量分布中的值标准化为 0-1 - python
- node.js - Webpack TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义
- python - VScode 无法识别任何 conda 环境
- google-drive-api - 是否可以使用 Google Drive API 从共享的 .zip 文件中获取文件
- xiaomi - 如何解密小米 [.secretAlbum] 文件夹和文件
- raster - 180 度子午线 (Oceanmap) 上 Chl-a 的缺失数据/0 值
- php - 为什么我的 JSON 文件一次只能更新 1 个字段?
- query-optimization - QLDB sum() 函数是否已优化?