此问题已在此处有答案:
How do I return the response from an asynchronous call?(42个回答)
How to get properties / values from snapshot.val() or snapshot.exportVal() in Firebase?(1个答案)
8小时前关闭
我有一个异步函数,它返回一个与用户配置文件相关的对象,每当调用它并执行.then
时,我都会返回[Object object]
,而不是我想要的实际值。
下面是返回promise的函数:
export const getUserData = async (userId) => {
try {
const app = getFirebaseApp();
const dbRef = ref(getDatabase(app));
const userRef = child(dbRef, `users/${userId}`);
const snapshot = await get(userRef);
return snapshot.val();
} catch (error) {
console.log(error);
}
}
然后我在我的代码库中调用这个函数,如下所示:
const userData = getUserData(data.userId).then((data) => {
console.log(data);
})
然而,数据等于[Object, object]
,而不是我想要使用的实际值。为什么即使我执行.then()
方法也没有提取值?谢谢.
编辑1:
const userDataFunction = async (uid) => {
let data = await getUserData(uid)
// THIS LOGS THE ACTUAL VALUE
console.log(data);
return data
}
const userData = userDataFunction(data.userId)
// HOWEVER, THIS LOGS [OBJECT, object].
console.log(userData);
1条答案
按热度按时间13z8s7eq1#
代码中有两个问题。
1.你没有抛出错误。确保您还通过在代码中添加.catch()块来处理任何潜在的错误。
1.您不应该在变量中接收.then()的值,而是在.then()块中访问它。
例如
查看如何首先打印结果,然后将数据记录到控制台中。