以下是我尝试使用Firebase云功能的内容:
-
倾听'public_posts'集合下某个文档的更改。
-
判断是否在"公共"字段中从真更改为假
-
如果为true,则删除触发功能的文档
对于步骤1&2,代码很简单,但我不知道步骤3的语法。如何获取触发该函数的文档的引用?也就是说,我想知道下面空行的问题代码是什么:
exports.checkPrivate = functions.firestore
.document('public_posts/{postid}').onUpdate((change,context)=>{
const data=change.after.data();
if (data.public===false){
//get the reference of the trigger document and delete it
}
else {
return null;
}
});
有什么建议吗?谢谢
如文档所述:
对于
onWrite
和onUpdate
事件,change
参数在字段后。其中每一个都是CCD_ 4。
因此,您可以执行以下操作:
exports.checkPrivate = functions.firestore
.document('public_posts/{postid}').onUpdate((change, context)=>{
const data=change.after.data();
if (!data.public) { //Note the additional change here
const docRef = change.after.ref;
return docRef.delete();
}
else {
return null;
}
});
更新下面的Karolina Haggård注释:如果您想获得postid
通配符的值,您需要使用context
对象,如:context.params.postid
。
严格地说,您得到的是文档id,而不是它的DocumentReference
。当然,基于这个值,您可以使用admin.firestore().doc(`public_posts/${postid}`);
重建DocumentReference
,这将提供与change.after.ref
相同的对象。
Change
对象(https://firebase.google.com/docs/reference/functions/cloud_functions_.change)
要获得更新的文档,您需要执行以下操作:
change.after.val()
要删除您要做的文档:
change.after.ref.remove()