Firebase云函数:如何使用通配符表示法获得对文档的引用



以下是我尝试使用Firebase云功能的内容:

  1. 倾听'public_posts'集合下某个文档的更改。

  2. 判断是否在"公共"字段中从真更改为假

  3. 如果为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;
}
});

有什么建议吗?谢谢

如文档所述:

对于onWriteonUpdate事件,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相同的对象。

onUpdate监听器返回一个Change对象(https://firebase.google.com/docs/reference/functions/cloud_functions_.change)

要获得更新的文档,您需要执行以下操作:

change.after.val()

要删除您要做的文档:

change.after.ref.remove()

相关内容

  • 没有找到相关文章

最新更新