如何通过函数从Firebase删除数据?

时间:2019-02-16 17:04:06

标签: node.js firebase google-cloud-firestore google-cloud-functions

我正在尝试通过功能从Firestore删除旧的通知。 我不知道如何将所有文档及其子集合丢到一个集合中。

数据库树看起来像这样:enter image description here

编辑:

这是我尝试过的:

    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    admin.initializeApp();
exports.deleteoldnotifications = functions.https.onRequest((req: any, res: { status: (arg0: number) => { send: () => void; }; }) => {
    const timeNow = new Date();
    const db = admin.firestore();
    db.collection('notification').get().then((snap: { forEach: (arg0: (collection: any) => void) => void; }) => {
        snap.forEach((collection: any) => {
            db.collection('notification').doc(collection.id).collection('messages').get().then((snapshot: { forEach: (arg0: (doccollection: any) => void) => void; }) => {
                snapshot.forEach((doccollection) => {
                    const durations = new Date(doccollection.data().duration);
                    if (durations <= timeNow) {
                        doccollection.delete();
                        console.log('duration: ',doccollection.duration);
                    }
                });
            });
        });
    });
    return null;
});

该功能因超时而结束。

如何去扔通知集合并删除旧的?

1 个答案:

答案 0 :(得分:2)

没有functions.firestore这样的东西,这恰恰是错误消息所说的。

如果要使用不是由Firestore本身触发的功能来访问Firestore,请使用Admin SDK来执行。您已经在代码中导入了Admin SDK,因此所需要做的只是:

admin.firestore().doc(...)