gpt4 book ai didi

java - Firestore 迭代文档以查找空字段

转载 作者:行者123 更新时间:2023-12-02 01:22:32 24 4
gpt4 key购买 nike

我正在我的应用程序中实现一项功能,允许用户查看有关帖子的正在进行的讨论。我希望用户只能进行 5 个活跃讨论。(创建讨论时,我希望能够检查用户文档,看看他们是否超出了允许的最大讨论量,这就是我正在处理的内容

currentDocument.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {

if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {

if (document.get("PostID 1") == null) {

//No discussion post in this field

} if (document.get("PostID 2") == null){

//No discussion post in this field

}
}
}
}
});

为此,我必须为每个文档字段创建一个 if 语句,这对我来说似乎是糟糕的编程实践。有没有更好的方法来解决这个问题,或者我应该以不同的方式解决问题,欢迎所有建议!

文档:

enter image description here

更新:

接近我的解决方案但仍然卡住

我通过以下方式获取文档

currentDocument.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {

}

我获取文档数据并存储它

if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();

Map test = document.getData(); }

我反复强调它

for (Object entry : test.entrySet() ){

Log.w(TAG, "Key = " + entry.toString()); }

到目前为止,我很好,我现在遇到的问题是我想要一个 if 语句来确定该值是否为空,这就是我正在处理的内容

for (Object entry : test.entrySet() ){

Log.w(TAG, "Key = " + entry.toString());

if (entry.toString().contains(null)){

Log.w(TAG, entry.toString() + " is equal to null");

}

}

它抛出错误

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference

我相信我没有正确读取 if 语句中的数据

最佳答案

当你有 DocumentSnapshot ,您可以调用getData()就可以得到Map所有字段和值。然后,您只需使用其 entrySet() 迭代它,就像任何其他 Java Map 一样。 .

关于java - Firestore 迭代文档以查找空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57437172/

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