【发布时间】:2020-07-07 20:40:15
【问题描述】:
我在 Firebase 数据库中有以下结构,其中RoomsTemplate 是订阅室。如果有人注册Users 节点,另一个函数(onWrite)会增加CountUsers 的值。
当用户从节点Users退订时,下面的函数会减小CountUsers的值。
exports.recountUsers = functions.database.ref('/RoomsTemplate/{id}/CountUsers').onDelete(async (snap) => {
const counterRef = snap.ref;
const collectionRef = counterRef.parent.child('Users');
const messagesData = await collectionRef.once('value');
return await counterRef.set(messagesData.numChildren());
});
问题是,如果我想删除RoomsTemplate的主节点,在这种情况下
-MBb2ZKj-pquagHBqguS
onDelete 函数不允许我删除它,但它会再次更新CountUsers: 0。尝试先用另一个函数删除Barrio:"Barcelona"节点,然后验证并删除主节点。
exports.recountUsers = functions.database.ref('/RoomsTemplate/{id}/CountUsers').onDelete(async (snap) => {
const counterRef = snap.ref;
const collectionRef = counterRef.parent.child('Users');
const messagesData = await collectionRef.once('value');
const Barrio = await counterRef.parent.child('Barrio').once('value');
if(Barrio.numChildren() === 0){
return await counterRef.remove();
}else if(Barrio.numChildren() > 0){
return await counterRef.set(messagesData.numChildren());
}else{
return null;
}
});
但我仍然有同样的存在问题。 如何在不执行onDelete函数的情况下永久删除主节点(-MBb2ZKj-pquagHBqguS)?
【问题讨论】:
标签: javascript firebase firebase-realtime-database google-cloud-functions