Alih keluar nod daripada pangkalan data masa nyata Firebase berdasarkan nilai bersarang menggunakan kekunci rawak
P粉558478150
P粉558478150 2024-04-03 18:10:45
0
2
479

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粉558478150
P粉558478150

membalas semua(2)
P粉765684602

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 

Sumber rujukan/inspirasi

P粉446800329

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 .

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan