因此,我使用Cloud Functions将数据持久存储在Firestore中,问题在于更新行上的不一致,当我执行该函数时,有时它实际上并不会更新UID(我将其设置为userRecord。 uid),就好像完全没什么一样跳过,让我绝对发疯了!
Https可调用函数
exports.createUser = functions.https.onCall((data, context) => {
return isAdmin(context.auth.uid)
.then(result => {
if(result === false) {
return "Você não possui acesso a essa função";
}
return createUser(data.usuario);
})
.catch(error => {
return error.message;
});
});
function createUser(usuario:Usuario): Promise<void> {
let uid;
return admin.auth().createUser({
email: usuario.email,
password: usuario.senha,
})
.then(userRecord => {
uid = userRecord.uid;
userRole(usuario.role, userRecord);
})
.then(() => {
db.collection('usuario').doc(uid).set(usuario);
})
.then(() => {
db.doc('usuario/'+uid).update({uid:uid});
})
.then(() => {
return 'O usuário '+`${usuario.nomeCompleto} `+'foi cadastrado com sucesso, recebendo o acesso de '+`${usuario.role}`;
})
.catch(error => {
return error.message;
});
}
function isAdmin(uid) {
return admin.auth().getUser(uid)
.then(userRecord => {
if(userRecord.customClaims.admin === true) {
return true;
}
return false;
})
.catch(() => {
return false;
});
}
function userRole(usuario:string, userRecord) {
if(usuario === 'Vendedor') {
adm.setCustomUserClaims(
userRecord.uid, {vendedor: true}
);
} else if(usuario ==='Admin') {
adm.setCustomUserClaims(
userRecord.uid, {admin: true}
);
} else if(usuario ==='Supervisor') {
adm.setCustomUserClaims(
userRecord.uid, {supervisor: true}
);
} else if(usuario ==='Faturamento') {
adm.setCustomUserClaims(
userRecord.uid, {faturamento: true}
);
}
}
应用类中的变量
createUser = firebase.functions().httpsCallable('createUser');
接收值的函数
cadastrarUsuario() {
const usuario = this.formCriarUsuario.value;
const id = this.db.createId();
this.createUser({usuario, id}).then(result => {
this.toast.toastMessage(result.data);
}). catch(error => {
this.toast.errorToast('Erro ao cadastrar usuário', error.message);
});
}
答案 0 :(得分:0)
进行了一些研究,现在一切正常!
static