首頁 >web前端 >js教程 >如何在 Firebase 中自動刪除超過兩小時的資料?

如何在 Firebase 中自動刪除超過兩小時的資料?

Patricia Arquette
Patricia Arquette原創
2024-11-29 21:48:12545瀏覽

How Can I Automate the Deletion of Data Older Than Two Hours in Firebase?

在 Firebase 中自動進行數據清理

要有效刪除超過兩小時的 Firebase 數據,請考慮以下方法:

Firebase限制:

Firebase 不提供「兩小時前」等動態參數的查詢。但是,它可以執行特定值的查詢,例如“在特定時間戳之後”。

基於時間的刪除:

實現定期執行的程式碼片段刪除當時超過兩小時的資料。

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

實作詳細資訊:

  • 使用 child_added 而不是 value 和 limitToLast(1) 來有效地處理刪除。
  • 當每個子項被刪除時,Firebase 將為新的「最後一個」觸發 child_added " 項目,直到截止點之後沒有更多項目。

雲函數對於Firebase:

如果您希望此程式碼在背景定期運行,您可以使用Cloud Functions for 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時就會觸發函數,只刪除滿足條件的子節點時間標準。

以上是如何在 Firebase 中自動刪除超過兩小時的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn