Google cloud firestore 如何在cloud firestore中回滚操作?

Google cloud firestore 如何在cloud firestore中回滚操作?,google-cloud-firestore,google-cloud-functions,Google Cloud Firestore,Google Cloud Functions,我创建了一个云函数来更新数据库中文档中的一个字段。但是我知道实际值被替换为NaN,我知道这个链接中的内容是什么。但是我想回滚该操作,以便该字段返回其值。这怎么可能呢?您可以尝试编写新的更新。如果成功,您的。然后可以解决承诺,函数可以结束。如果失败,请在.catch中添加一些行,以使用change.before.data()更新文档 然后,文档将返回到其以前的值 下面是一些示例代码 const admin = require('firebase-admin'); const functions =

我创建了一个云函数来更新数据库中文档中的一个字段。但是我知道实际值被替换为NaN,我知道这个链接中的内容是什么。但是我想回滚该操作,以便该字段返回其值。这怎么可能呢?

您可以尝试编写新的更新。如果成功,您的
。然后
可以解决承诺,函数可以结束。如果失败,请在
.catch
中添加一些行,以使用
change.before.data()更新文档

然后,文档将返回到其以前的值

下面是一些示例代码

const admin = require('firebase-admin');
const functions = require('firebase-functions');

admin.initializeApp();

const firestore = admin.firestore();

exports.myFunction = functions.firestore
  .document('myCollection/{myDocumentId}')
  .onUpdate((change, context) => {

  const newValue = change.after.data();
  const oldValue = change.before.data();

  let myChanges = {
    // Update a value
  };

  return change.after.ref.update(myChanges)
    .then(() => {
      console.log('Document updated successfully');
      return Promise.resolve();
    })
    .catch(() => {
      // The update failed and the document needs to be rolled back
      return change.before.ref.set(oldValue);
    })
    .then(() => {
      console.log('Document was rolled back');
      return Promise.resolve();
    })
    .catch(err => {
      console.error(err);
      return Promise.reject(err);
    });
});

在尝试写入之前,是否可以检查该值是否为数字?也许你可以在你的问题中添加一些示例代码。是的,它是一个数字。@JasonBerryman,让我们假设它不是一个数字,在操作后,该值被NaN替换,因为我意识到错误,我想将Opartion回滚到其原始值。