无法使用 Node.js 在 Firebase 云存储中保存 CustomMetadata

Posted

技术标签:

【中文标题】无法使用 Node.js 在 Firebase 云存储中保存 CustomMetadata【英文标题】:Unable To Save CustomMetadata in Firebase Cloud Storage With Node.js 【发布时间】:2019-05-24 22:38:23 【问题描述】:

结果

在以下代码中,mp3 文件使用 Node.jsCloud Function 中的 Firebase Bucket /em> 根据 Extend Cloud Storage with Cloud Functions 文档,类似于example image transformation。当在 Firebase 控制台中选择 mp3 文件或通过 ExoPlayerandroid 上流式传输时,它会按预期播放。但是,元数据未在 Firebase 的控制台中显示为已上传。

预期

CustomMetadata 对象根据Custom Metadata 文档与 mp3 文件一起上传。用例是上传带有 mp3 的图像 URL 的 APICID3metadata 标记,以便在 Android 上供 ExoPlayer 使用。

Firebase 控制台

设置

注意:为简洁起见,这是完整代码的一部分。

元数据locationactivity 来自文档示例,用于测试上传自定义元数据是否有效。

...
.then(() => 
    if (exists === false) 
      return bucket.upload(tempAudioFile,  
        destination: audioFilePath,  
        metadata: 
          contentType: 'audio/mpeg',
          customMetadata: 
            'location': 'Yosemite, CA, USA',
            'activity': 'Hiking'
          
        
      )
     else 
      throw new Error("Audiocast exists.") 
    
  )
...

【问题讨论】:

【参考方案1】:

自定义元数据的Cloud function syntax 与前端库不同。使用密钥 metadata 代替 customMetadata。在你的情况下:

metadata: 
    contentType: 'audio/mpeg',
    metadata: 
        'location': 'Yosemite, CA, USA',
        'activity': 'Hiking'
    

【讨论】:

本,这是一个很好的答案。能否加个链接供以后的读者参考? 感谢约翰的建议。 我想知道他们为什么会做这种几乎肯定会浪费几乎每个人大量时间的事情。人们会认为不同 API 之间的事情应该更加一致。

以上是关于无法使用 Node.js 在 Firebase 云存储中保存 CustomMetadata的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 Firebase 以进行云消息传递

无法在 razorpay [firebase_functions/internal] 内部的 firebase 云函数中创建订单 ID

是否可以从firebase云函数node.js更新firestore中的map类型字段?

将 Runtime 更改为 Node.js 10 后云功能失败

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

设置 Firebase 本地模拟器云功能环境配置值