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

xmq68pz9  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(116)

我已经创建了一个云函数,触发任何新的文件上传Firebase Storage。一旦上传成功,函数将更新其元数据,但即使使用“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;
});

没有错误,并且在Cloud Function上记录其打印“成功”消息。又称“元世代”:'2'"属性也得到了更新,这意味着它应该已经用新值更新了元数据,但它没有。

42fyovps

42fyovps1#

问题来自于这样一个事实:如果你想设置自定义键/值对,它们必须在你传递给setMetadata()方法的对象的metadata键中,即:metadata对象。这在node.js的API参考文档中有解释。
因此,以下操作将起作用:

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

相关问题