Rumah > Soal Jawab > teks badan
Saya mempunyai pangkalan data langsung dengan struktur berikut:
"keys" : "randomUserId1" : "randomKey1" : timestamp1 "randomUserId2" : "randomKey2" : timestamp2 "randomKey3" : timestamp3 "randomUserId3" : "randomKey4" : timestamp4
Nilai cap masa ialah masa penciptaan dalam milisaat. Saya kini mahu menggunakan fungsi Firebase dan javascript untuk memadamkan semua kunci dengan cap masa yang terlalu lama. Masa tidak begitu penting, jadi fungsi padam mungkin mencetuskan penulisan yang sesuai di tempat lain dalam pangkalan data.
Saya cuba mengubah suai kaedah contoh untuk memadamkan nod anak lama tetapi tidak dapat memahami cara menjadikannya berfungsi dengan struktur pangkalan data di atas.
Bagaimana untuk menulis fungsi js untuk menyelesaikan tugasan di atas?
Saya sudah tentu boleh menambah pasangan kunci/nilai ("cap masa": cap waktu) di bawah "Kekunci rawak" jika itu akan memudahkan urusan.
P粉7656846022024-04-04 12:03:30
Fungsi Firebase (dan gunakan firebase-sdk
) untuk memadam kekunci dengan cap masa lebih awal daripada ambang:
const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); exports.deleteOldKeys = functions.database.ref('/keys/{userId}/{key}') .onWrite(async (change, context) => { const timestampThreshold = Date.now() - (24 * 60 * 60 * 1000); // Change this to adjust the threshold const userId = context.params.userId; const key = context.params.key; if (!change.after.exists()) { // deleted key, no need to check timestamp return null; } const timestamp = change.after.val(); if (timestamp < timestampThreshold) { // delete the key await admin.database().ref(`/keys/${userId}/${key}`).remove(); } return null; });
P粉4468003292024-04-04 00:15:52
Pautan yang anda berikan adalah berdasarkan ulasan saya tentang pemadaman lebih lama daripada 2 jam
Untuk menjadikannya berfungsi pada struktur data anda, anda boleh menggunakan orderByValue()
而不是 orderByChild("timestamp")
. Jadi:
var oldItemsQuery = ref.orderByValue().endAt(cutoff);
Untuk mengetahui lebih lanjut, lihat dokumentasi Firebase tentang Isih dan Penapisan Data .