ホームページ >ウェブフロントエンド >jsチュートリアル >2 時間以上経過した Firebase データを削除するには?

2 時間以上経過した Firebase データを削除するには?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-07 22:06:15808ブラウズ

How to Delete Firebase Data Older Than Two Hours?

2 時間以上古い Firebase データを削除する

質問:

遅延とデータベースのパフォーマンスを最適化するには、古いデータを効率的に削除することが重要です。この質問は、2 時間以上前の Firebase データを削除する方法を求めています。

解決策:

Firebase では、「2 時間前」のような動的パラメータを使用したクエリは許可されていません。 。」代わりに、「過去の特定の日時の後」など、特定のタイムスタンプに対してクエリを実行できます。

古いデータを削除するには、次のコード スニペットを検討してください:

var ref = firebase.database().ref('/path/to/items/');
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var old = ref.orderByChild('timestamp').endAt(cutoff).limitToLast(1);
var listener = old.on('child_added', function(snapshot) {
    snapshot.ref.remove();
});

その仕組みは次のとおりです。

  • value の代わりに child_added を使用します。
  • Set limitToLast(1) を使用して、カットオフ後の最後のアイテムのみが削除されるようにします。
  • アイテムが削除されると、古いアイテムがすべて削除されるまで、Firebase は次の「最後の」アイテムに対して child_added をトリガーします。

Firebase のクラウド関数の場合:

exports.deleteOldItems = functions.database.ref('/path/to/items/{pushId}')
.onWrite((change, context) => {
  var ref = change.after.ref.parent;
  var now = Date.now();
  var cutoff = now - 2 * 60 * 60 * 1000;
  var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
  return oldItemsQuery.once('value', function(snapshot) {
    var updates = {};
    snapshot.forEach(function(child) {
      updates[child.key] = null
    });
    return ref.update(updates);
  });
});

この関数データが /path/to/items で変更されるたびに実行され、変更されている場合にのみ子ノードが削除されます。

以上が2 時間以上経過した Firebase データを削除するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。