fuctions.EventContext выдает ошибку при попытке получить uid после обновления до последней версии firebase (6.10.0)
У меня был тестовый проект, работающий нормально. Я обновил инструменты firebase, typescript и создал новый проект с тем же кодом. Внезапно проект выдает ошибку на EventContext.auth.uid. При наведении контекста или авторизации он говорит Возможно, объект не определен.ts(2532)
export const onAccountTransferCreated = functions.database
.ref('/data_transfer/from_data/user_data/{transferPas}')
.onCreate(async(snapshot, context) => {
console.info(`Snapshot = ${snapshot.toJSON}`)
console.info(`Context = ${context.auth.uid}`)
admin.auth().getUser(context.auth.uid)






context — это объект типа Контекст события. Как видно из документации API для его свойство аутентификации, он может быть нулевым или неопределенным:
This field is only populated for Realtime Database triggers and Callable functions. For an unauthenticated user, this field is null. For Firebase admin users and event types that do not provide user information, this field will not exist.
Определение TypeScript для EventContext.auth таково:
export interface EventContext {
auth?: {
uid: string;
token: object;
};
}
Обратите внимание на? после auth. Это означает, что свойство не должно существовать.
TypeScript (в строгом режиме) предупреждает вас о том, что у вас могут возникнуть проблемы во время выполнения, если это свойство отсутствует. Вы должны проверить его перед использованием:
export const onAccountTransferCreated = functions.database
.ref('/data_transfer/from_data/user_data/{transferPas}')
.onCreate(async(snapshot, context) => {
console.info(`Snapshot = ${snapshot.toJSON}`)
if (context.auth) {
console.info(`Context = ${context.auth.uid}`)
admin.auth().getUser(context.auth.uid)
}
})
Или вы можете включить строгий режим TypeScript, что я не рекомендую. Всегда лучше сделать проверку, чтобы избежать сбоев во время выполнения.
Ссылка не работает