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.
中的第一个示例说明了您正在尝试做的事情
我有一个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.
中的第一个示例说明了您正在尝试做的事情