如何通过Firebase Functions实现Firestore跨集合关联文档同步更新
Firestore customers集合更新同步关联appointments集合问题排查
我需要在Firestore的customers集合中某条文档更新时,同步更新appointments集合中所有关联的文档,计划通过Firebase Functions实现该功能,但最初编写的代码执行后关联文档没有触发更新,以下是最初的问题代码:
const functions = require("firebase-functions"); const admin = require('firebase-admin') admin.initializeApp(functions.config().firebase) exports.customerStatusUpdated = functions.firestore .document('customers/{customerId}') .onUpdate((change, context) => { const customer = context.params.appointmentId; const newValue = change.after.data(); const previousValue = change.before.data(); const newStatus = newValue.accountStatus; const prevStatus = previousValue.accountStatus; const clientUID = previousValue.userId; let promises = [] if(newValue !== prevStatus){ admin.firestore().collection('appointments').where('clientUID', '==', `${clientUID}`) .get() .then((querySnapshot) => { querySnapshot.forEach((doc) => { const id = doc.id const p = admin.firestore().collection('appointments').doc(id).update({clientStatus: newStatus}) promises.push(p) }); return Promise.all(promises) }) .catch((error) => { console.log("Error getting documents: ", error); }); } })
解决结果
经排查是代码顶部有一个错误声明的变量导致Firebase Functions无法正常执行更新操作,修正后的上述代码可正常运行,能满足customers文档更新时同步更新所有关联appointments文档的需求,可供有相同需求的开发者参考。
内容的提问来源于stack exchange,提问作者Antony Sanders
相关产品推荐
相关产品推荐

