await返回[Function]而不是value
尝试通过使用async和await函数从firebase返回查询的值。返回的结果是[功能]或未处理的承诺拒绝警告。对promise,async和await不熟悉,但是我已经在一些网站上尝试了基本示例,其中大多数网站具有resolve和reject参数,我认为这些参数应该与firebase promises相同。
我尝试了2个不同的版本,但结果均不正确。
get_all_users:async function(){
ref = db.ref("/user_data");
const value = await ref.orderByKey().on("child_added", function(data){});
console.log(value.val().name);
}
返回UnhandledPromiseRejectionWarning
function get_async_users(){
ref = db.ref("/user_data");
ref.orderByKey().on("child_added", function(data) {
return data.val().name;
});
}
返回未定义
期望其中之一返回查询中的名称。
答案 0 :(得分:1)
$parent
用于监听曾经触发的所有事件。因此,它不会返回Promise,因为Promise表示一个可用的值,并且因为它没有返回Promise,所以您无法on
(或者至少:这样做没有意义)因此,它是无操作)。
如果要等待第一次出现,则有once
,它还会返回一个可以await
编辑的承诺。
关于UnhandledPromiseRejection:您应始终将异步代码包装到await
(在try / catch
内)中,或将async function
附加到链中的最高承诺中,然后可以正确处理这些错误。