如何从Firebase中的数据库触发的云功能访问文件元数据?

时间:2019-01-10 14:33:54

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

我有一个项目,该项目使用Firebase工具将图像存储在Firebase存储中,并将各种数据存储在实时数据库中。

我具有通过数据库更改触发的云功能。在此函数内部,我需要访问特定文件的元数据以获取一些信息(我不需要修改元数据)。

这就是我访问文件的方式。

const gcs = require('@google-cloud/storage')();
...
const bucket = admin.storage().bucket();
...
myFile = bucket.file("images/" + imagePath);

如何获取元数据?这样的天真的解决方案:

myFile.metadata;
or
myFile.getMetadata();

不起作用。  我认为应该有一个简单的内置方法,并且非常惊讶地发现很难在网上找到解决方案。

1 个答案:

答案 0 :(得分:1)

根据documentation(Google Cloud Storage Node.js客户端的客户端API参考),您应使用getMetadata(),如下所示:

const gcs = require('@google-cloud/storage')();
...
const bucket = admin.storage().bucket();
...
myFile = bucket.file("images/" + imagePath);

myFile.getMetadata().then(function(data) => {
  const metadata = data[0].metadata;
});

请注意,也可以按以下方式调用此方法:myFile.getMetadata(function(err, metadata, apiResponse) {});。 但是,由于在Cloud Function中执行异步工作时必须返回Promise(请参阅原因here),因此应省略回调并使用方法返回的Promise。