gpt4 book ai didi

javascript - firebase 登录后 TypeScript 返回对象

转载 作者:行者123 更新时间:2023-11-30 15:33:45 24 4
gpt4 key购买 nike

我有以下代码

login = (email: string, senha: string): { nome: string, genero: string, foto: string;} => {
this.fireAuth.signInWithEmailAndPassword(email, senha).then(res => {
firebase.database().ref('Usuarios/' + res.uid).once('value', snapshot => {
return {
nome: snapshot.val().nome,
genero: snapshot.val().genero,
foto: snapshot.val().avatar
};
});
});
}

我需要它在我登录 firebase 后返回一个对象,然后获取我的信息,但它会抛出一个错误,如果函数类型不是“void”或“any”,我必须返回一些东西,但我返回指定的对象。

我能做什么?

最佳答案

您使用了错误的异步和 promise 概念。有几个选项可以解决它。

1 - 您可以返回 promise 并让调用者解决它。

login = (email: string, senha: string): Promise<{nome: string, genero: string, foto: string}> => {
return new Promise<{nome: string, genero: string, foto: string}>((resolver, rejeitar) => {
this.fireAuth.signInWithEmailAndPassword(email, senha).then(res => {
firebase.database().ref('Usuarios/' + res.uid).once('value', snapshot => {
resolver({
nome: snapshot.val().nome,
genero: snapshot.val().genero,
foto: snapshot.val().avatar
});
});
});
});
}

2 - 您可以在登录函数中发送回调,并在执行 promise 时执行它

login = (email: string, senha: string, loginCallback: (nome: string, genero: string, foto: string) => any) => {
this.fireAuth.signInWithEmailAndPassword(email, senha).then(res => {
firebase.database().ref('Usuarios/' + res.uid).once('value', snapshot => {
loginCallback({
nome: snapshot.val().nome,
genero: snapshot.val().genero,
foto: snapshot.val().avatar
});
});
});
}

编辑: 我检查了 Firebase 文档 ( https://firebase.google.com/docs/database/web/read-and-write#read_data_once )。还有第二个错误。

firebase.database().ref('Usuarios/' + res.uid).once('value', snapshot => {

应该是:

firebase.database().ref('Usuarios/' + res.uid).once('value').then(snapshot => {

关于javascript - firebase 登录后 TypeScript 返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com