[英]Checking with Cloud Function if a database node exists in Firebase Realtime Database
我有一個onUpdate雲功能,我需要檢查數據庫節點是否存在。
對我而言,理想的做法是:
exports.watchTeamMemberUpdates = functions.database
.ref('/teams/{teamName}')
.onUpdate((change) => {
if (!change.before.exists()) {
console.log('exists error');
return null;
}
});
但它需要一個快照,我正在給它一個承諾。
是否可以以任何方式檢查文件是否存在承諾?
還有更好的方法來制作除.once.then之外的快照嗎?
我假設通過編寫“我需要檢查文件是否存在”,您的意思是檢查數據庫節點是否存在(即團隊成員是否以團隊名稱保存)。 我冒昧地相應地修改你的問題標題和內容。
請注意,如果要檢測團隊成員是否不存在onUpdate()
觸發器, 則不會成功 ,因為只有節點存在之前才會觸發此Cloud Function,因為我們會查看更新(而不是創建) )。
所以你應該使用onWrite()
觸發器。 下面是兩種觸發器的代碼。 我建議您在數據庫中嘗試多次寫入和更新(當然,在部署了這兩個函數之后)並查看打印到Cloud Function日志的內容。
exports.watchTeamMemberUpdates = functions.database
.ref('/teams/{teamName}')
.onUpdate((change, context) => {
if (!change.before.exists()) {
console.log('watchTeamMemberUpdates: exists error');
return null;
} else {
console.log('watchTeamMemberUpdates: Team member exists');
return null;
}
});
exports.watchTeamMemberWrites = functions.database
.ref('/teams/{teamName}')
.onWrite((change, context) => {
if (!change.before.exists()) {
console.log('watchTeamMemberWrites: exists error');
return null;
} else {
console.log('watchTeamMemberWrites: Team member exists');
return null;
}
});
PS:請注意,要傳遞給onUpdate(handler)
方法的onUpdate(handler)
是一個包含兩個參數的函數,請參閱https://firebase.google.com/docs/reference/functions/functions.database.RefBuilder#onUpdate 。 然而,第二個是可選的。 這與onWrite(handler)
方法相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.