gpt4 book ai didi

javascript - Angular:从 firebase 实时数据库中的 onValue() 返回一个值

转载 作者:行者123 更新时间:2023-12-02 15:57:27 43 4
gpt4 key购买 nike

我想返回“用户”对象。

收到错误信息:

Variable 'user' is used before being assigned.ts(2454)

我尝试使用 async/await 但我无法将 await 分配给代码末尾的“return user”或 user= await snapshot.val() 因为它位于 onValue() 作用域。

getLoggedInUser(id: string): User {
const db = getDatabase();
var user: User;
onValue(ref(db, '/users/' + id), (snapshot) => {
user = snapshot.val();
// ...
}, {
onlyOnce: true
});
return user;
}

最佳答案

当您调用 onValue 时,您会从数据库中的该路径获取当前值,然后还会获取对该值的所有更新。由于您的回调可能会被多次调用,因此无法返回单个值。

如果您只想获取一次值并返回它,您需要使用 get 而不是 onValue。那么你也可以使用async/await

async getLoggedInUser(id: string): Promise<User> {
const db = getDatabase();
var user: User;
const snapshot = await get(ref(db, '/users/' + id))
user = snapshot.val();
return user;
}

关于javascript - Angular:从 firebase 实时数据库中的 onValue() 返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71244451/

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