javascript - 写入实时数据库的 Firebase 用户身份验证触发器
问题描述
exports.setupDefaultPullups = functions.auth.user()
.onCreate(
async (user) => {
const dbRef= functions.database.ref;
let vl= await (dbRef.once('value').then( (snapshot) => {
return snapshot.ref.child('userInfo/'+user.uid).set(18);
}));
return vl;
}
);
我正在尝试在 Firebase 中为新用户编写一些初始设置的触发器。但是,上面的代码不起作用。它有什么问题?基本上,在注册新用户时,我想使用上述路径将他/她的属性“defaultPullUps”设置为 18。
编辑:我很抱歉没有提供细节。最初,“async”关键字存在问题,已通过更新 node.js 引擎修复。现在,根据我如何调整代码,我会收到各种错误消息。有时它会说“......不是一个功能”。
编辑':虽然我同意我的问题没有达到标准,但它有一个价值:在 Firebase 身份验证触发器的在线文档中,未显示如何访问“主”数据库https://firebase.google.com /docs/functions/auth-events
编辑'':这是整个消息:
TypeError: Cannot read property 'child' of undefined
at exports.setupDefaultPullups.functions.auth.user.onCreate.user (/srv/index.js:15:36)
at cloudFunctionNewSignature (/srv/node_modules/firebase-functions/lib/cloud-functions.js:105:23)
at /worker/worker.js:756:24
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
解决方案
这条线没有意义:
const dbRef= functions.database.ref;
如果您想在由其他来源(例如您的情况下的 Firebase 身份验证)触发的 Cloud Function 中使用 Firebase 实时数据库,您可以使用 Firebase Admin SDK 来实现。
有关这方面的示例,请参阅Cloud Functions入门文档的Initialize Firebase SDK for Cloud Functions部分。具体来说,您需要导入和初始化使用:
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers. const functions = require('firebase-functions'); // The Firebase Admin SDK to access the Firebase Realtime Database. const admin = require('firebase-admin'); admin.initializeApp();
然后可以使用以下方法从您的函数访问数据库:
const dbRef= admin.database().ref();
推荐阅读
- amazon-ec2 - 如何为新的 AWS 实例增加或添加存储(最多 500Gb)?
- kubernetes - 入口资源未路由正确公开的服务
- c# - 连接到 NetSuite Web 服务时出现 SOAP 错误:“未定义命名空间前缀 'soapenv'”
- mongodb - mongo 和 laravel 之间没有使用 docker 的连接
- testing - 拥有 1000 多个节点的 Jenkins 性能 - 自己的设备场
- javascript - TypeError: $(...).on 不是prototype.js 的函数
- react-native - 集成(Redux 与本机反应)
- android - 在 Oreo 中将位图重力设置为底部离开屏幕层列表
- javascript - 验证表单上的两个字段
- mysql - 在 sql developer 中更改连接 url