проверить мои триггеры аутентификации firebase локально - PullRequest
0 голосов
/ 11 мая 2018

Я хотел бы протестировать локальную базу данных firebase и триггеры аутентификации и нашел эту документацию https://firebase.google.com/docs/functions/local-emulator#invoke_realtime_database_functions.

Следуя инструкциям, которые я набрал

firebase functions:shell

, а затем вызвал мой пользовательский триггер пожарной базы с

createNewUser({user: {email: 'some@email.com'}},{auth: {uid: '123'}})

Однако, это дает мне ошибку

firebase > createNewUser({user: {email: 'some@email.com'}},{auth: {uid: '123'}})
'Successfully invoked function.'
firebase > info: User function triggered, starting execution
info: Function crashed
TypeError: Cannot read property 'toLowerCase' of null

Я пытаюсь запустить эту функцию:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.createNewUser = functions.auth.user().onCreate((user) => {
  let lowerCaseEmail = user.email.toLowerCase();
  return admin.database().ref(`/users/${user.uid}/lowerCaseEmail`).set(lowerCaseEmail);
});

Мне кажется, я неправильно вызываю свою пользовательскую функцию в функциях firebase: shell.

Кто-нибудь хотел бы указать мне правильное направление?

1 Ответ

0 голосов
/ 11 мая 2018

В соответствии с документацией вы должны передать UserRecord (см. документ ) при вызове функции аутентификации, см. В нижней части документа, на который вы указываете в своем вопросе (то есть https://firebase.google.com/docs/functions/local-emulator#invoke_realtime_database_functions)

Выполняет следующие работы:

createNewUser({ disabled: false, 
                displayName: 'Renaud', 
                email: 'Mail@Gmail.com', 
                emailVerified: false, 
                metadata: {creationTime: null, lastSignInTime: null}, 
                photoURL: null, 
                providerData: ['google.com'], 
                uid: '123' })

Вы найдете новую запись в базе данных с адресом электронной почты в нижнем регистре.


Собственно, так как документацияговорит: «Укажите только те поля, от которых зависит ваш код, или вообще ничего, если вы хотите только запустить функцию.», я пробовал использовать следующий объект UserRecord, и он также работает .

createNewUser({email: 'Mail@Gmail.com', uid: '123'})
...