使用我当前的代码,在将大多数文档添加到批处理之前会启动batch.commit()。如何链接我的诺言,以便可以从子集合中获取文档,然后将其添加到批处理中,然后在对所有子集合执行操作之后,再提交批处理。
exports.syncUserDetailsWithFriends = functions.firestore
.document('users/{userId}')
.onUpdate(change => {
const newUserData = change.after.data();
let usersRef = admin.firestore().collection('users')
let batch = admin.firestore().batch();
usersRef.get()
.then(users => {
users.forEach(userDoc => {
let friendsRef = usersRef.doc(userDoc.id).collection('friends')
friendsRef.get()
.then(friends => {
friends.forEach(friend => {
if (friend.id == newUserData.id) {
batch.update(friendsRef.doc(friend.id), newUserData)
}
})
})
})
}).then(batch.commit().catch(error => console.error(error)))
});