我创建了一个云函数来更新我的数据库中文档中的字段。但是我用NaN替换了实际值我知道这个链接Cloud function is writing NaN to firestore是什么。但我想回滚操作,以便该字段获得其值。如何可能?
答案 0 :(得分:1)
您可以尝试编写新更新。如果成功,您的.then
可以解决承诺,功能可以结束。如果失败,请向.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);
});
});