首页 > 解决方案 > 当它实际上不是空时从 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 代码中搞砸了?

标签: androidnode.jsgoogle-cloud-firestoregoogle-cloud-functions

解决方案


您需要为所有字段包含默认的空构造函数和 getter。如果只有您的时间戳为空,那么您不能有时间戳的吸气剂。


推荐阅读