【问题标题】:Retrieving null object from Firestore when its not actually null当它实际上不是空时从 Firestore 中检索空对象
【发布时间】:2019-12-17 15:54:00
【问题描述】:

我一直试图理解为什么我的查询从服务器生成的时间戳值返回空对象。

基本上,我在我的 Firestore 数据库上使用了 onUpdate() 触发器并检查产品是否库存不足,并在库存

    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;
}

这与我的构造函数和对象类型有关还是我在服务器/Node.js 代码中搞砸了?

【问题讨论】:

  • 您是否为每个属性制作了 getter,包括时间戳?对于自定义类,使用默认的空构造函数

标签: android node.js google-cloud-firestore google-cloud-functions


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 2012-04-01
    • 2011-06-01
    • 2011-06-09
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2016-01-11
    相关资源
    最近更新 更多