【发布时间】:2020-02-03 14:23:15
【问题描述】:
所以我使用 firebase auth 和数据库来设置新用户到数据库,如果设置成功,我想为该用户设置声明。 所以这意味着我在一个承诺中拥有一个承诺:
function setUser(user){
// no need for the database code before this, but userRef is set properly
return userRef.set(user)
.then(succ => {
return firebase.firebase.auth().setCustomUserClaims(user.key, {admin: true})
.then(() => {
console.log("setting claims")
return true;
});
})
.catch(err => {
return err
})
}
调用函数:
app.post("/register_user",jsonParser,async (req, res) => {
var user = req.body.user;
let result = await fireBase.setUser(user);
res.send(result);
})
发生的情况是我在数据库中获得了集合,但未设置声明,我也看不到日志。我知道这是一个 js 问题,而不是 firebase 问题。我尝试了许多不同的方法(使用等待)但没有奏效。
【问题讨论】:
-
您是如何确定声明未设置的?如果
admin角色在设置后没有立即出现在客户端代码或安全规则中,请记住,客户端可能需要一个小时才能获得新角色,因此您将拥有等待那么久,或者强制客户端为用户刷新 ID 令牌(通过调用user.getIdToken(true))。 -
我还在 setClaims 调用的 return true 之前添加了一个 console.log() ,只是为了确保它确实有效。但它从不打印。
-
您能否更新问题中的代码以反映更改,并添加您看到的具体日志和未看到的日志?
标签: javascript firebase promise firebase-authentication