我正在尝试添加具有以下功能的用户角色。该函数应部署为 firebase 函数。
const functions = require('firebase-functions')
const admin = require('firebase-admin')
admin.initializeApp()
const db = admin.firestore()
exports.AddUserRole = functions.auth.user().onCreate(async (authUser) => {
if (authUser.email) {
const customClaims = {
admin: true,
}
try {
let _ = await admin.auth().setCustomUserClaims(authUser.uid, customClaims)
return db.collection('roles').doc(authUser.uid).set({
email: authUser.email,
role: customClaims,
})
} catch (error) {
console.log(error)
}
}
})
当我尝试使用 firebase deploy --only functions:AddUserRole 进行部署时,我收到一个错误解析错误:意外令牌 => 并且部署失败。
如果我删除 async/await 它工作得很好,但我需要异步等待这个和未来的功能,所以我想知道我做错了什么。
一些附加信息。我正在使用 node v.12.21.0 和所有 firebase 工具/SDK 等的最新版本。
答案 0 :(得分:0)
我认为您可以删除 '_ = ...' 并等待在角色中设置新文档的响应并返回。
这只是一个建议,但我希望它有所帮助。
exports.AddUserRole = functions.auth.user().onCreate(async (authUser) => {
if (authUser.email) {
const customClaims = {
admin: true,
}
try {
await admin.auth().setCustomUserClaims(authUser.uid, customClaims)
//Or whatever you want to call it
const updatedRole = await db.collection('roles').doc(authUser.uid).set({
email: authUser.email,
role: customClaims,
})
return updatedRole
} catch (error) {
console.log(error)
}
}
})