Мне нужна помощь, я пытаюсь обновить свои коллекции комментариев, используя облачную функцию, но мой код не работает. Моя функция успешно запущена, но не обновляет мой avatarUrl, когда мой userPhotoUrl обновляется
Вот полный путь к коллекции, которую я хочу обновить: "/ comments / {postId} / comments / {commentId}"
моя коллекция камина
exports.onUpdateUser2 = functions.firestore
.document("/users/{userId}")
.onUpdate(async (change, context) => {
const userUpdate = change.after.data();
const userId = context.params.userId;
const newPhotoUrl = userUpdate.photoUrl;
console.log("userId",userId);
console.log("newPhotoUrl",newPhotoUrl);
const querySnapshot = await admin.firestore().collection("comments").get();
querySnapshot.forEach(doc => {
console.log("doc",doc.data());
const postId = doc.id;
const comments = admin.firestore().collection("comments").doc(postId).collection("comments").where("userId","==",userId).get();
comments.forEach(doc2 => {
return doc2.ref.update({avatarUrl: newPhotoUrl});
});
});
});
Спасибо,
ОБНОВЛЕНИЕ
Я пытаюсь изменить код, используя затем , чтобы справиться с этими различными обещаниями, но я действительно не знаю, почему commentsRef.get (), кажется, возвращает мне пустой querySnapshots, потому что коллекции комментариев в моей базе данных firestore имеют несколько документов, где в В каждом документе есть другая коллекция комментариев, где в эту секунду в комментариях к коллекции есть куча документов, содержащих данные. По всему этому пути я не знаю, как выполнять итерации, пока не попал в документы, содержащие данные, которые мне нужно обновить. Может кто-нибудь помочь мне, пожалуйста?
exports.onUpdateUserUpdateComments = functions.firestore
.document("/users/{userId}")
.onUpdate(async (change, context) => {
const userUpdate = change.after.data();
const userId = context.params.userId;
const newPhotoUrl = userUpdate.photoUrl;
console.log("userId",userId);
console.log("newPhotoUrl",newPhotoUrl);
const commentsRef= admin.firestore().collection("comments");
return commentsRef.get().then(querySnapshot => {
return querySnapshot.forEach(doc => {
return admin
.firestore()
.collection("comments")
.doc(postId)
.collection("comments")
.where("userId", "==", userId)
.get()
.then(doc => {
if (doc.exists) {
doc.ref.update({avatarUrl: newPhotoUrl});
}
return console.log("The function has been run.");
});
});
});
});