注册新帐户时出现此错误。我使用的代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.afterRegFunction = functions.auth.user().onCreate((user) => {
var randInt = (Math.floor(Math.random() * 8) + 1);
var userObject = {
u_n : user.uid, // user nickname
u_n_c : admin.database.ServerValue.TIMESTAMP, // next date to change nick
u_a : randInt.toString(), // user avatar
u_a_c : admin.database.ServerValue.TIMESTAMP, // next date to change avatar
d : admin.database.ServerValue.TIMESTAMP, // date the account was created
u_p : 0 // user points
};
admin.database().ref('userInfo/' + user.uid).set(userObject);
admin.database().ref('nicknames/' + user.uid).set(user.uid);
});
我正在完成状态的函数:"错误"在日志中,并且数据库中没有添加任何内容。
你忽略了 set() 返回的承诺,它是异步的。 使用云函数后台类型函数,您必须返回仅在所有异步工作完成后解析的承诺。 由于您有两项工作,因此您将需要一个新的承诺,当它们都得到解决时,该承诺就会得到解决。
首先,您应该阅读有关终止函数的文档,并观看有关如何在云函数中处理承诺的视频系列,以便了解您需要做什么。
然后,您将意识到需要执行以下操作:
const p1 = admin.database().ref('userInfo/' + user.uid).set(userObject);
const p2 = admin.database().ref('nicknames/' + user.uid).set(user.uid);
return Promise.all([p1, p2]);
同样对于云函数,您应该像这样初始化没有参数的管理 SDK:
admin.initializeApp();
您现在的做法已被弃用。