我需要帮助,我正在尝试使用云函数更新我的评论集合,但我的代码似乎不起作用。当我的userPhotoUrl更新时,我的功能成功运行,但没有更新我的头像URL
这里是我想要更新的集合的完整路径:"/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.");
});
});
});
});
如果不尝试,它应该是这样的:
return admin.firestore().collection("comments")
.doc(postId)
.where("userId", "==", userId)
.get()
.then(doc => {
if (doc.exists) {
doc.ref.update({avatarUrl: newPhotoUrl});
}
return console.log("The function has been run.");
});
无论如何,按照Doug Stevenson的建议,你不应该开始在云函数中学习JS,因为那些嵌套的循环有点奇怪,你可能缺乏一个良好的学习起点。