我在Firestore中有一个用户集合"客户/{userId}";,其中每个用户都有一个";uploadsLeft";字段和值。
每次用户将项目上传到";projects/{docId}";,我想要";uploadsLeft";值递减1。我希望使用Firebase函数来完成此操作。我该怎么做?
感谢您的反馈:(
exports.reduceUploadsLeft = functions.firestore
.document('projects/{docId}')
.onCreate((snap, context) => {
const data = snap.data();
var docRef = db.document('customers/'+data.owner);
docRef.update({
uploadsLeft: admin.firestore.FieldValue.increment(-1)
})
});
首先,由于某种原因,递减不会起作用,每次在"中创建新文档时都会触发递减;项目";,我希望它只在用户创建一个新文档以";项目";。
我建议阅读使用云函数进行异步编程的文档。您需要返回一个在所有异步工作完成后实现的承诺。update((是异步的并返回promise,因此您可以直接返回它。
return docRef.update({
uploadsLeft: admin.firestore.FieldValue.increment(-1)
})