无法使用Firebase Admin在Node.js上的Google存储对象上设置元数据

时间:2019-01-01 14:54:34

标签: firebase google-cloud-storage firebase-storage

我正在编写Firebase应用,我需要在运行Node.js的后端中进行一些更改

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  storageBucket: config.get("firebase.storage")
});

我可以从初始化admin中获取信息,并且能够查看该文件中的现有元数据。设置无效:

const myfile = {URL: "/users/1/demo.png"}; //this file exists

const bucket = admin.storage().bucket();
const [metadata] = await bucket.file(redeemable.URL).getMetadata();
console.log(metadata); //this works
if (!metadata.metadata.whitelist) metadata.metadata.whitelist = {};

metadata.metadata.whitelist[req.user.userId] = true;

await bucket.file(myfile.URL).setMetadata(metadata);

firebase管理员不应该具有访问权限吗?我也没有任何错误。

1 个答案:

答案 0 :(得分:0)

正如 OP 在评论中指出的那样,metadata 对象必须是 { metadata: Record<string, string> } 类型。 documentation 没有提到这一点,TypeScript 类型也没有帮助。

编辑:文档确实实际上提到了它(强调我的):

<块引用>

您可以在给定对象的元数据键中设置自定义键/值对,

但是措辞很容易让人错过。

bucket
    .file("path/to/file")
    .setMetadata({
      metadata: {
        someKey: "someValue",
      },
    })