Firebase的云端function – 移除最老的孩子

我有一个onWrite云function设置为侦听当用户更新的东西。 我想删除最大的孩子,如果有超过3,这是我在:

exports.removeOld = functions.database.ref('/users/{uid}/media').onWrite(event => { const uid = event.params.uid if(event.data.numChildren() > 3) { //Remove Oldest child... } }) 

每个孩子都有一个"timestamp"键。

 { "users" : { "jKAWX7v9dSOsJtatyHHXPQ3MO193" : { "media" : { "-Kq2_NvqCXCg_ogVRvA" : { "date" : 1.501151203274347E9, "title" : "Something..." }, "-Kq2_V3t_kws3vlAt6B" : { "date" : 1.501151232526373E9, "title" : "Hello World.." } "-Kq2_V3t_kws3B6B" : { "date" : 1.501151232526373E9, "title" : "Hello World.." } } } } } 

所以在上面的例子中,当文本值被添加到“媒体”时,最旧的将被删除。

这个样本应该可以帮到你。

你需要这样的东西:

 const MAX_LOG_COUNT = 3; exports.removeOld = functions.database.ref('/users/{uid}/media/{mediaId}').onCreate(event => { const parentRef = event.data.ref.parent; return parentRef.once('value').then(snapshot => { if (snapshot.numChildren() >= MAX_LOG_COUNT) { let childCount = 0; const updates = {}; snapshot.forEach(function(child) { if (++childCount <= snapshot.numChildren() - MAX_LOG_COUNT) { updates[child.key] = null; } }); // Update the parent. This effectively removes the extra children. return parentRef.update(updates); } }); }); 

您可以在这里findFirebase样本的所有云端函数。