【问题标题】:Cloud function to add/remove the url of a file from Firebase Database that has been added to/removed from Firebase Storage用于从 Firebase 数据库添加/删除已添加到 Firebase 存储中/从中删除的文件的 url 的云功能
【发布时间】:2017-12-25 22:24:06
【问题描述】:

我正在尝试在应用程序中实现一项功能,该功能将列出 ListView 中的所有文件名,单击特定列表项将显示文件的内容。我不太了解 JavaScript,对云函数也很陌生。我编写了一个小函数,只要将文件添加到 firebase 存储,它就会将元数据添加到 firebase,但即使文件被删除,它最终也会添加数据。 这是代码

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

exports.urls = functions.storage.object().onChange( event => {
    const file = event.data;
    const metadata = file.metadata;
    console.log(metadata);
return admin.database().ref("/").set(metadata); });

谁能告诉我我可以在上面做哪些更改来添加 url 而不是元数据,如果文件被删除,也可以删除相同的内容?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database firebase-storage google-cloud-functions


    【解决方案1】:

    来自 Firebase 文档部分 Detect resourceState and other event attributes

    事件的resourceState 属性值为"exists"(用于对象创建和更新)或"not_exists"(用于对象删除和移动)。

    // Exit if this is a move or deletion event.
    if (resourceState === 'not_exists') {
      console.log('This is a deletion event.');
      return;
    }
    

    【讨论】:

    • 谢谢@Frank。这解决了大部分问题。不过,我似乎找不到任何代码来从 firebase 数据库中删除数据。有没有可以调用的函数来做到这一点?
    • 我指的是云函数@Frank中的一个函数调用,这样我就可以在console.log('This is a deletion event.');之后从firebase数据库中删除我想要的内容,而不是Android中的那个。如果您能告诉我类似的话,我将不胜感激。
    • 继续我之前的评论。删除我使用 return admin.database().ref("/").set(metadata); 添加到数据库的方式
    • 抱歉,在导航中点击错误:firebase.google.com/docs/database/web/…。不知何故,Admin SDK 文档中缺少此部分,但代码也可以在 Admin SDK 中使用。
    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 2017-11-23
    • 1970-01-01
    • 2021-07-07
    • 2022-01-02
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多