javascript - 文件元数据未在 Firestore 存储中更新

标签 javascript firebase google-cloud-functions firebase-storage firebase-admin

我创建了一个 Cloud Functions,它会在 Firebase 存储中的任何新文件上传时触发。一旦成功上传功能将更新其元数据,但即使使用“setMetadata()”设置新元数据也不会得到应用。在此过程中没有错误,但在检查更新的元数据时,新元数据没有反射(reflect)出来。

exports.onImageUpload = functions.storage.object().onFinalize(async (object) => {  
  const storageRef = admin.storage().bucket(object.bucket);

  var metadata = {
      'uploader': 'unknown'   
  }

  await storageRef.file(object.name).setMetadata(metadata).then(function(data) {
    console.log('Success');
    console.log(data);
    return;
  }).catch(function(error) {
    console.log(error);
    return ;
  });
  return;
}); 

没有错误,并且在 Cloud Function 上记录其打印的“成功”消息。此外,“元代:‘2’”属性也得到更新,这意味着它应该使用新值更新元数据,但它没有。

最佳答案

这个问题是因为如果你想设置自定义键/值对,它们必须在你传递给 的对象的 metadata 键中>setMetadata() 方法,即您案例中的 metadata 对象。这在 API Reference Documentation 中有解释。对于 node.js。

所以下面的将起作用:

exports.onImageUpload = functions.storage.object().onFinalize(async (object) => {
    const storageRef = admin.storage().bucket(object.bucket);

    var metadata = {
        metadata: {
            'uploader': 'unknown'
        }
    }

    try {
        const setFileMetadataResponse = await storageRef.file(object.name).setMetadata(metadata);
        console.log('Success');
        console.log(setFileMetadataResponse[0]);
        return null;
    } catch (error) {
        console.log(error);
        return null;
    }
});

关于javascript - 文件元数据未在 Firestore 存储中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58171462/

相关文章:

javascript - jQuery Lightbox 完成了吗?

javascript - 忽略/取消 JavaScript 拖放的浏览器拖动

javascript - jQuery 无法找到最接近的 p

安卓火力地堡 : how to change objects with specific field value?

reactjs - Firebase - 服务器 Firestore 读取服务器端渲染的最佳实践

android - 程序类型已经存在 : com. google.android.gms.common.util.VisibleForTesting -':app:transformDexArchiveWithExternalLibsDexMergerForDebug'

firebase - 从firebase中的文件导入环境变量

javascript - 无法在多个文件中拆分 Firebase 函数

javascript - SendGrid 不发送邮件,但不抛出任何错误

javascript - 在 Node 中每天中午 12 点仅安排一次作业