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

问题描述 投票:1回答:1

我创建了一个云功能,该功能可在Firebase存储中上传任何新文件时触发。一旦成功上传功能将更新其元数据,但是即使使用'setMetadata()'设置新的元数据也不会应用。在此过程中没有错误,但是在检查更新的元数据时,新的元数据没有反映出来。

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;
}); 

没有错误,并在云功能上记录其打印“成功”消息。另外,“元生成:'2'”属性也已更新,这意味着它应该具有带有新值的更新后的元数据,但是没有。

javascript firebase google-cloud-functions firebase-storage firebase-admin
1个回答
1
投票

问题来自以下事实:如果要设置自定义键/值对,它们必须位于传递给metadata方法(即setMetadata()对象)的对象的metadata键中在你的情况下。在node.js的API Reference Documentation中对此进行了说明。

因此,以下将起作用:

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;
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.