java如何从安卓查询Firebase中是否存在值数组?
我有一个日期的静态数组-String[] dates = new String[MAX_DAYS]
每个日期的格式为yyyyMMdd
,数组按字母顺序排序
(例如dates[0] = "20200102"
、dates[1] = "20200101"
、dates[2] = "20191231"
、dates[3] = "20191230"
等等)
我还有一个数据库(我使用Firebase数据库)存储日期(以上述格式),如下所示:
{
"key" : {
"aaa" : "20191230",
"bbb" : "20191231",
"ccc" : "20191231",
"ddd" : "20191231",
"eee" : "20200101",
"fff" : "20200101",
"ggg" : "20200103"
}
}
我想检查dates
数组中的每个值(减去第一个索引),如果该值在数据库中至少出现一次。(即,如果数据库中存在dates
的所有值,但第一个值除外,则执行其他操作)
我创建了一个查询,该查询只获取key
下值介于dates[1]
和dates[dates.length - 1]
之间的子项:
// reference to "key" node
ref.orderByValue().startAt(dates[dates.length - 1]).endAt(dates[1])
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
找出数据库中是否存在dates
的所有值的最有效方法是什么?我是否只是将每个子级的值存储在另一个数组中,然后循环两个数组?还是有更好的办法
# 1 楼答案
像这样的方法应该会奏效:
因此,这首先将快照从数据库转换为列表,然后在您描述的数组上循环,以检查数据库中是否存在每个快照