Firebase:从事务返回批量写入

问题描述

在某些情况下,firebase无法正确更新数据库中的库存值时出现问题。我正在使用FieldValue.increment(),它在大多数情况下都有效,但是由于某些原因,即使没有来自Firebase的错误消息,它也可能不会更新1%的时间。我正在查看Firebase文档,似乎在重试或失败的情况下需要对数据库幂等写入。我当时在考虑使用事务检查数据库是否在更新之前发生了更改,但是我的代码当前正在使用批处理写入多个集合。

我想知道是否可以从Firebase中的事务返回批量写入提交?我知道您可以在事务内部进行写操作,但是如果创建了一个批处理,然后基于事务的读取操作,您提交或不提交该批写操作,那么会出现任何问题吗?当我运行该程序时似乎工作正常,但我担心可能没有看到潜在的边缘情况。这是我正在谈论的示例...

  const batch = db.batch();
  const ref1 = db.collection('references').doc('referenceId1');
  const ref2 = db.collection('references').doc('referenceId2');
  batch.update(ref1,{completed: true});
  batch.set(ref2,...)
  return db.runTransaction((transaction)=> {
    return transaction.get(ref1).then((doc) => {
      const document = doc.data();
      if(!ref1.completed){
        return batch.commit()
      }
   })
  })
  .then(function() {
    console.log("Transaction successfully committed!");
  }).catch(function(error) {
    console.log("Transaction Failed: ",error);
  });

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)