Node.js 如何使用Firebase云功能删除旧文件?

Node.js 如何使用Firebase云功能删除旧文件?,node.js,firebase,firebase-realtime-database,google-cloud-functions,firebase-storage,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,Firebase Storage,我正在为Firebase云函数编写一个函数,在其中我可以从Firebase数据库中删除旧节点。在每个节点上都有一个指向保存在Firebase存储中的文件的链接 数据库结构 "data" : { "-Lo0onTCSVeY-Kco5ujX" : { "photo" : "https://firebasestorage.googleapis.com/v0...", "idD" : "-Lo0onTCSVeY-Kco5ujX", "idUs" : "jh

我正在为Firebase云函数编写一个函数,在其中我可以从Firebase数据库中删除旧节点。在每个节点上都有一个指向保存在Firebase存储中的文件的链接

数据库结构

  "data" : {
    "-Lo0onTCSVeY-Kco5ujX" : {
      "photo" : "https://firebasestorage.googleapis.com/v0...",
      "idD" : "-Lo0onTCSVeY-Kco5ujX",
      "idUs" : "jh4Ch9rBgQPwBTfv43MgNissRUP2",
      "timestamp" : 1567693686925,
    }
  },
功能:

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

var DAY_MILLIS = 86400000 //1 Day

exports.deleteOldPosts = functions.database.ref('/data/{pushId}').onWrite(function(change) {
    var ref = change.after.ref.parent; // reference to the parent
    var now = Date.now();
    var cutoff = now - DAY_MILLIS;
    var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
    return oldItemsQuery.once('value').then(function(snapshot) {
      // create a map with all children that need to be removed
      var updates = {};
      snapshot.forEach(function(child) {
        updates[child.key] = null;
      });
      // execute all updates in one go and return the result to end the function
      return ref.update(updates);
    });
});
如何删除该文件? 提前谢谢。

这对我很有用

const promises = [];
promises.push(ref.update(updates));
const bucket = admin.storage().bucket();
promises.push(bucket.file(`file/${anotherFile}`).delete());
return Promise.all(promises);
这对我有用

const promises = [];
promises.push(ref.update(updates));
const bucket = admin.storage().bucket();
promises.push(bucket.file(`file/${anotherFile}`).delete());
return Promise.all(promises);

将来,如果您知道文件在云存储中的路径,那么删除该文件会容易得多。您现在拥有的是一个下载URL,在使用后端SDK时,它不容易转换为路径。如果您有一个路径,您所要做的就是将其馈送到云存储节点SDK以删除它。是否要删除所有早于某个日期的文件?将来,如果您知道文件在云存储中的路径,则删除该文件会容易得多。您现在拥有的是一个下载URL,在使用后端SDK时,它不容易转换为路径。如果您有路径,只需将其馈送到云存储节点SDK即可将其删除。是否要删除所有早于某个日期的文件?