Вы можете загрузить собственные метаданные в виде объекта, содержащего свойства String:
Из документации здесь :
var metadata = {
customMetadata: {
'location': 'Yosemite, CA, USA',
'activity': 'Hiking'
}
}
Затем вы можете использовать getMetadata
в файле(документ здесь ), чтобы получить его информацию или, например, получить customMetadata
как в моей функции триггера ниже.
Например, и из моего приложения для iOS я создал StorageMetadata
иЯ установил customMetadata
на ["user":"userID_AZERRRRR"]
В функциях js моего узла я разработал функцию триггера следующим образом:
exports.testStorageOnFinalize = functions.storage.object().onFinalize(uploadedObject => {
console.log('metadata keys', Object.keys(uploadedObject.metadata));
console.log('metadata user', uploadedObject.metadata['user']);
})
В консоли журнала:
3: 00: 20.140 PM info testStorageOnFinalize пользователь метаданных userID_AZERRRRR
Риски
Из комментария Дуга это решение не являетсяполностью защищены, потому что метаданные могут быть подделаны.
Итак, , чтобы разрешить это , мы можем использовать правила безопасности для хранения, чтобы проверить, равен ли пользователь идентифицированному пользователю:
// Allow reads if a certain metadata field matches a desired value
allow read: if resource.metadata.user == request.auth.uid;
. Вы можетепроверить правила хранения здесь