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



我创建了一个云函数,可以在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;
}); 

没有错误,并在云功能上记录其打印"成功"消息。此外,"元生成:'2'"属性也得到了更新,这意味着它应该使用新值更新元数据,但它没有。

问题来自这样一个事实,即如果要设置自定义键/值对,它们必须位于传递给setMetadata()方法的对象的metadata键中,即您情况下的metadata对象。节点.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;
}
});

最新更新