android - 当它实际上不是空时从 Firestore 中检索空对象
问题描述
我一直试图理解为什么我的查询从服务器生成的时间戳值返回空对象。
基本上,我在我的 Firestore 数据库上使用了 onUpdate() 触发器并检查产品是否库存不足,并在库存 <=5 时发出提醒。这是我的 Node.js 代码,即使没有适当的响应,它目前也可以工作。
const date = admin.firestore.FieldValue.serverTimestamp();
const reminder = {
productID : product.barcode,
date : date,
status: 'Order'
}
const docSnapShot = admin.firestore().collection('reminders').doc(product.barcode).get().then(documentSnapShot =>{
if(documentSnapShot.exists){
return admin.firestore().collection('reminders').doc(product.barcode).update({date: date}).then(res=> {
console.log('Document updated');
return null;
}).catch(error =>{
console.log('Error',error);
return null;
});
}
else{
exists = docSnapShot.exists;
return null;
}
});
服务器成功插入生成的时间戳,即使手动添加,它仍然在 Java/Android 中检索空对象。使用 FirestoreRecyclerView 和 RecyclerView 自定义适配器和类。我尝试了 ServerTimeStamp 并仔细检查了变量名、序列,但我仍然得到一个空对象。我得到了正确的 productID 和 status 值。
public reminderFirestore(Timestamp date, String productID, String status) {
this.productID = productID;
this.date = date;
this.status = status;
}
这与我的构造函数和对象类型有关,还是我在 server/Node.js 代码中搞砸了?
解决方案
您需要为所有字段包含默认的空构造函数和 getter。如果只有您的时间戳为空,那么您不能有时间戳的吸气剂。
推荐阅读
- android - Android API 19:如何禁用屏幕镜像?
- java - 如何让 Intellij IDEA 中出现“迁移到 JUnit 5”选项?
- python - 当 a 和 b 都很大时(按 10**10 到 10**18 的顺序),如何计算 a**b?
- typescript - 如何在没有类型断言的语句中定义一个也是函数的对象(来自接口的对象)?
- c# - Winforms 应用程序在绘制图表时更改高 dpi 显示器上的缩放比例
- graphql - AWS AppSync 初始批量放置不更新缓存
- tensorflow - TensorFlow Lite 预训练模型需要哪些输入预处理
- chart.js - Chart Js,以不同方式在轴上设置一些刻度
- macos - mac Mojave 中的“编码所选视频文件”在哪里?
- python - 针对 Access 数据库的 pyodbc 查询出现“未实现可选功能”错误