我创建了一个 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/