firebase - Firebase createUser 然后 setCustomUserClaims 在 Cloud Functions 中
问题描述
我正在尝试创建一个用户,设置自定义声明,然后将数据设置为firestore
使用云功能。下面的代码工作正常,firebase serve
只是想从 firebase 社区获得一些反馈。因为我在嵌套then()
它也会发出警告。有没有更好的办法?
这是我的代码:
app.post('/register', (request, response) => {
const data = request.body;
firebase.auth().createUser(data)
.then((userRecord) => {
firebase.auth().setCustomUserClaims(userRecord.uid, { admin: true }
.then(() => {
db.collection("users").doc().set(data)
.then((payload) => {
return response.send({ success: 'success' });
})
.catch((error) => {
return response.send(error);
})
})
.catch((error) => {
return response.send(error);
})
return response.send(successMsg);
})
.catch((error) => {
return response.send(error);
})
})
解决方案
我会按如下方式链接承诺:
app.post('/register', (request, response) => {
const data = request.body;
admin.auth().createUser(data)
.then((userRecord) => {
return admin.auth().setCustomUserClaims(userRecord.uid, { admin: true });
})
.then(() => {
return admin.firestore().collection("users").doc().set(data);
})
.then(() => {
response.send({ success: 'success' }); //Don't need to return here, since it is an HTTPS Cloud Function, just send the response
})
.catch((error) => {
response.status(500).send(error);
})
})
请注意,我已更改firebase.auth().createUser(data)
为,admin.auth().createUser(data)
因为该createUser()
方法属于 Admin SDK,请参阅https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#createUser。我对admin.firestore()
.
您可以保留firebase
变量/常量名称,但您需要将 Admin SDK 声明为
const firebase = require('firebase-admin');
推荐阅读
- android - 尝试使用自定义相机应用程序拍照时获取 E/Camera:错误 2 和 E/Camera:错误 1
- android - sqlite 中的子查询。计算组中选定项目的数量
- ruby - 当每个单词中有多个元音时,如何获得正确的输出?我的代码仅适用于每个单词中的一个元音
- python - Discord 语音对象没有“播放”属性
- vue.js - Vue 3 如何像从 UI 一样通过 vue-cli 添加插件?
- app-store - 分发 IPA - 为什么在分发具有企业选项的应用程序时不断收到未安装私钥的错误?
- curl - 为什么我在尝试使用 GitHub API 获取存储库列表时收到“未找到”响应?
- c# - 无法将表“DeviceCodes”用于实体类型“DeviceCode”,因为它正在用于实体类型“DeviceFlowCodes”
- python - 所有操作系统的默认扬声器输出
- javascript - 从视图到javascript获取按钮的ID?