gpt4 book ai didi

java - 如何从 android 查询 Firebase 中是否存在值数组?

转载 作者:行者123 更新时间:2023-12-01 19:45:42 25 4
gpt4 key购买 nike

我有一个静态日期数组 - 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 的所有值是否最有效的方法是什么?数据库中存在吗?我是否只需将每个子项的值存储在另一个数组中,然后循环这两个数组?或者有更好的办法吗?

最佳答案

这样的事情应该有效:

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<String> dbDates = new List<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
dbDates.add(ds.getValue(String.class);
}
for (int i=0; i < dates.length; i++) {
if (dbDates.contains(dates[i])) {
System.out.println("Database contains "+dates[i]);
}
else {
System.out.println("Database does not contain "+dates[i]);
}
}
}

因此,这首先将快照从数据库转换为列表,然后循环遍历您描述的数组以检查它们是否都存在于数据库中。

关于java - 如何从 android 查询 Firebase 中是否存在值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59127519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com