我目前有這樣的資料庫結構 
我想要做的是能夠遍歷每個具有特定 feedId 的回圈,我一直在嘗試這種方式,但目前沒有運氣。有人可以提供幫助嗎?
function clearAllPostsInOwnFeed(userId) {
return admin
.database()
.ref(constants.FBC_USERS_FEEDS '/' userId)
.once('value')
.then((snapshot) => {
snapshot.forEach((snap) => {
if (snap.child('fromId').val() === userId) return snap.remove()
return snap
})
console.log(snapshot)
return snapshot
})
}
uj5u.com熱心網友回復:
您當前正在從內部回呼回傳快照。由于這不是承諾,它會立即解決 - 您的功能將被終止。在它洗掉節點之前。
最簡單的解決方法是使用Promise.all()等待所有洗掉完成:
function clearAllPostsInOwnFeed(userId) {
return admin
.database()
.ref(constants.FBC_USERS_FEEDS '/' userId)
.once('value')
.then((snapshot) => {
let promises = []
snapshot.forEach((snap) => {
if (snap.child('fromId').val() === userId) {
promises.push(snap.ref.remove())
}
})
return Promise.all(promises);
})
}
或者,您可以使用多路徑更新通過一次寫入擦除所有匹配的節點:
function clearAllPostsInOwnFeed(userId) {
const ref = admin
.database()
.ref(constants.FBC_USERS_FEEDS '/' userId);
return ref
.once('value')
.then((snapshot) => {
let updates = {};
snapshot.forEach((snap) => {
if (snap.child('fromId').val() === userId) {
updates[snap.key] = null;
}
})
return ref.update(updates);
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/333926.html
標籤:javascript 节点.js 火力基地 谷歌云功能
