Alb*_*ert 3 firebase firebase-authentication google-cloud-functions
我想在本地测试一些 firebase 数据库和身份验证触发器,并找到了此文档https://firebase.google.com/docs/functions/local-emulator#invoke_realtime_database_functions。
按照我输入的说明进行操作
firebase functions:shell
Run Code Online (Sandbox Code Playgroud)
然后调用我的自定义 firebase 触发器
createNewUser({user: {email: 'some@email.com'}},{auth: {uid: '123'}})
Run Code Online (Sandbox Code Playgroud)
但是,这给了我错误
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
Run Code Online (Sandbox Code Playgroud)
这是我尝试运行的功能:
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);
});
Run Code Online (Sandbox Code Playgroud)
我相信我没有在 firebase 函数中正确调用我的自定义函数:shell。
有人想指出我正确的方向吗?
根据您在调用 Auth 函数时必须传递的文档UserRecord(请参阅doc),请参阅您在问题中指向的文档底部(即https://firebase.google.com/docs/functions/local-模拟器#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' })
Run Code Online (Sandbox Code Playgroud)
您确实在数据库中找到了新记录,电子邮件为小写。
实际上,由于文档说:“仅指定您的代码所依赖的字段,或者如果您只想运行该函数,则根本不指定。”,我已经尝试使用以下UserRecord对象,它也可以工作。
createNewUser({email: 'Mail@Gmail.com', uid: '123'})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1943 次 |
| 最近记录: |