通过nodejs从firebase实时数据库中删除旧节点
Delete old nodes from firebase real time database via nodejs
我的数据库结构如下:
我在我的安全规则中使用密钥。我在 nodejs firebase 包中找不到任何 childByAutoId 函数,所以我为每个新节点使用时间戳。我想在数据库中保留每个节点大约一个月的时间。例如,在每个月的第一天,nodejs 会删除两个月前的节点。 simple/best 的方法是什么?我需要更改数据库结构才能存档吗?或者 firebase 有可能为我做这件事吗?这就是我写入数据库的方式:
import { initializeApp } from 'firebase/app';
import { getDatabase, ref, set, remove } from 'firebase/database'
const firebaseApp = initializeApp(config);
const db = getDatabase(firebaseApp);
function writeUserData(secret, userName, timestamp) {
return set(ref(db, `${secret}/${timestamp}`), {
name: userName
});
}
大多数其他 Firebase SDK 中 childByAutoId
的等效项称为 push
。 push
生成的密钥与 childByAutoId
.
生成的密钥格式相同
如果你知道秘钥,你可以用我在这里展示的方法找到下面所有过时的秘钥:Delete firebase data older than 2 hours
最大的区别是你在键中有时间戳,所以你的查询应该是这样的:
const ref = db.child('Xhj0yJux....Dm8R');
var oldItemsQuery = ref.orderByKey().endAt(cutoff);
正如 Dharmaraj 评论的那样,您通常希望 运行 Cloud Functions、Cloud 运行 或其他可以定期将其安排到 运行 的受信任环境中的此代码。
我的数据库结构如下:
我在我的安全规则中使用密钥。我在 nodejs firebase 包中找不到任何 childByAutoId 函数,所以我为每个新节点使用时间戳。我想在数据库中保留每个节点大约一个月的时间。例如,在每个月的第一天,nodejs 会删除两个月前的节点。 simple/best 的方法是什么?我需要更改数据库结构才能存档吗?或者 firebase 有可能为我做这件事吗?这就是我写入数据库的方式:
import { initializeApp } from 'firebase/app';
import { getDatabase, ref, set, remove } from 'firebase/database'
const firebaseApp = initializeApp(config);
const db = getDatabase(firebaseApp);
function writeUserData(secret, userName, timestamp) {
return set(ref(db, `${secret}/${timestamp}`), {
name: userName
});
}
大多数其他 Firebase SDK 中 childByAutoId
的等效项称为 push
。 push
生成的密钥与 childByAutoId
.
如果你知道秘钥,你可以用我在这里展示的方法找到下面所有过时的秘钥:Delete firebase data older than 2 hours
最大的区别是你在键中有时间戳,所以你的查询应该是这样的:
const ref = db.child('Xhj0yJux....Dm8R');
var oldItemsQuery = ref.orderByKey().endAt(cutoff);
正如 Dharmaraj 评论的那样,您通常希望 运行 Cloud Functions、Cloud 运行 或其他可以定期将其安排到 运行 的受信任环境中的此代码。