java - 如何通过嵌套数据删除firebase中的父母?
问题描述
此类数据进入数据库
{
"Markers" : {
"brTRf3EfqzaWuaw0q42Ay8Jnj0F3" : {
"-M5Tp8BZpUkJSbmV4Qya" : {
"date" : "22, апр., 2020",
"latitude" : "53.9150522051367",
"longitude" : "27.440601512789726",
"permission" : false,
"time" : "01:21"
},
"-M5XhMon2UZiD6M_Zbp5" : {
"date" : "22, апр., 2020",
"latitude" : "53.914562076017575",
"longitude" : "27.441855780780315",
"permission" : false,
"time" : "19:25"
}
}
}
}
以用户的第一个条目为例:brTRf3EfqzaWuaw0q42Ay8Jnj0F3
他和他的父母在地图上做了一个标记:“-M5Tp8BZpUkJSbmV4Qya”,它包含一个带有时间数据的记录:“时间”:“01:21”
实际上的问题是:如何通过在其中记录时间来删除父记录“-M5Tp8BZpUkJSbmV4Qya”???
解决方案
要根据查询删除父级,请执行以下操作:
DatabaseReference markerRef = FirebaseDatabase.getInstance().getReference().child("Markers");
markerRef.child("brTRf3EfqzaWuaw0q42Ay8Jnj0F3").orderByChild("time").equalTo("01:21").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
data.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
首先添加对节点的引用brTRf3EfqzaWuaw0q42Ay8Jnj0F3
,然后使用orderByChild("time").equalTo("01:21")
您可以创建查询来检索包含上述时间的节点。然后在内部迭代snapshots
并使用getRef()
您可以获得对该快照的源位置的引用。
推荐阅读
- python - 对于一个 != if 语句,我得到 ValueError:具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()
- exchange-basicauth - 当不再支持基本身份验证时,如何运行 Exchange Online 远程 powershell 服务器到服务器?
- python - AttributeError:“NoneType”对象没有属性“时间”paramiko
- mongodb - 使用 Docker 在 MongoDb 中自动运行设置副本集和恢复数据库
- java - 如何使用 EasyMock 测试返回另一个方法的方法?
- javascript - CSS:带宽度的图像比例
- java - 如何使用 Spring Boot 在 Postgresql 中插入用户输入的日期
- php - Laravel collection->push() 无法正常工作
- javascript - react-native 中的分析器损坏(V8 和 systrace)
- python - 如何停止 docker 数据库容器