【发布时间】:2020-05-13 18:20:22
【问题描述】:
我正在创建一个 Android 应用程序,其中我必须为组织和个人用户记录 YTD、MTD 和每日记录。我尝试了每次保存记录的方法,我有一个计数器集合,可以保存像
这样的数据ORG_ORGID_2020 (for YTD)
ORG_ORGID_202005 (for MTD)
ORG_ORGID_20200513 (for Daily data)
ORG_USER1_2020 (for YTD)
ORG_USER2_202005 (for MTD)
ORG_USER3_20200513 (for Daily data)
这样我在获取报告时就不必阅读很多文档。现在为了尽量减少读取,我将属性保存在上述文档中(org_ID、年份(即 2020)、年月(即 202005)等。我以计数器对象的形式保存上述文档
public class Counter {
@DocumentId
private String id;
private long count;
private String dealerId;
private String userId;
private String year;
private String yearMonth;
private String yearMonthDate;
}
当我必须更新计数器时不会出现问题。我尝试使用
private FieldValue count;
并且能够正确使用更新计数
Counter counter = new Counter();
counter.setCount(FieldValue.increment(1));
counter.setDealerId(intentDealer.getId());
counter.setYear(strFullYear);
batch.set(dealerYtdColRef, counter, SetOptions.merge());
但是当我尝试获取记录时,我得到了
java.lang.RuntimeException:在类 com.google.firebase.firestore.FieldValue 上找不到要序列化的属性
如果我将字段更改为
private long count;
我不明白如何更新计数器。我必须与计数器一起设置所有字段。我也尝试使用 .update 方法,但是当文档不存在并且必须第一次创建时它会出错。
我怎样才能正确管理计数器?我正在从仅应用程序而不是功能中做对应的部分,因为我试图让应用程序仅在免费的 firebase 层中工作。
【问题讨论】:
标签: java android firebase google-cloud-firestore