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身份验证触发器的在线文档中,未显示如何访问“主”数据库。
编辑'':这是整个消息:
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;
如果要在从其他来源触发的Cloud Function中使用Firebase Realtime数据库(例如您的Firebase身份验证),则可以使用Firebase Admin SDK进行操作。
有关此示例,请参见Initialize Firebase SDK for Cloud Functions文档的Get started with 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();
关于javascript - 写入实时数据库的Firebase用户身份验证触发器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53293371/