1

ユーザが何かを更新したときに聞くようにonWriteクラウド機能を設定しました。Firebaseのクラウド機能 - 最も古い子を削除する

exports.removeOld = functions.database.ref('/users/{uid}/media').onWrite(event => { 

    const uid = event.params.uid 

    if(event.data.numChildren() > 3) { 
     //Remove Oldest child... 
    } 

}) 

これらの子供たちのそれぞれ"timestamp"鍵を持っている:3つ以上がある場合、私はこれは私がでてるあり、最古の子を削除しようとしています。

{ 
    "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.." 
     } 
     } 
    } 
    } 
} 

上記の例では、テキスト値が「media」に追加されると、最も古いものが削除されます。

+0

あなたがfirebaseチャイルズの構造を追加することができますか? –

+0

確かに、私は私の質問を更新しました。 –

答えて

0

This sample should help you.

あなたはそのような何かが必要です。

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); 
     } 
    }); 
}); 

You can find all Cloud Functions for Firebase samples here.

関連する問題