Firestore - 如果不存在则跳过文档更新,无需失败

Firestore - Skip document update if it doesn't exists, without need of failures

我有一个collection

/userFeed 

当当前用户启动 following/unfollowing 他们时,我 create/delete 文档(代表用户)。

...
  /userFeed (C)
    /some-followed-user (D)
      -date <timestamp>
      -interactions <number>

当用户喜欢 post 时,interactions 字段将被更新。但是...如果用户不关注 post 所有者怎么办?然后,我只需要跳过文档更新,而不需要生成 failures/errors.

const currentUserFeedRef = firestore
    .collection("feeds")
    .doc(currentUserId)
    .collection("userFeed")
    .doc(otherUserId);

  const data = {
    totalInteractions: admin.firestore.FieldValue.increment(value),
  };

  const precondition = {
    exists: false, // I am trying weird things
  };

  if (batchOrTransaction) {
    return batchOrTransaction.update(
      currentUserFeedRef,
      data,
      precondition
    );
  } 

是否可以仅“如果文档不存在则跳过更新”?

Is it possible to just "skip the update if the doc doesn't exist"?

不,不是你解释的那样。 Firestore 更新不会悄无声息地失败。

如果您需要在更新文档之前知道它是否存在,您应该先简单地阅读它并检查它是否存在。您可以在事务中非常轻松地执行此操作,并且如果您首先使用事务对象以这种方式检查它,则可以确保更新不会因文档丢失而失败。

事实上,documentation.

中的第一个示例说明了您正在尝试做的事情