我正在尝试创建用户,设置自定义声明,然后使用云功能将数据设置到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);
})
})
答案 0 :(得分:1)
我将按如下方式承诺:
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 SDK,因此我已将admin.auth().createUser(data)
更改为createUser()
,请参见https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#createUser。我对admin.firestore()
做过同样的事情。
您可以保留firebase
变量/常量名称,但随后需要将Admin SDK声明为
const firebase = require('firebase-admin');