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样本的所有云端函数。
- Firebase提供了一个“0”而不是实际的variables内容
- 通过云端function检索Firebase存储图像链接
- Firebase的云端function:将整个数据库读入内存
- Firebase主机设置问题
- 刷新Firebase令牌
- Firebase admin.auth.createUser错误(nodejs + Typescript + firebase-admin)
- firebase表示云function错误
- Firebase 3.3.x Nodejs – createUserWithEmailAndPassword不是一个函数
- 如何让从Firebase上的Facebook身份validation生成的UID始终保持在我的应用程序?