Javascript 从Firebase获取数据会记录正确的值,但返回“0”;“未定义”;
我目前正在使用此功能从我的Firebase项目中获取数据:Javascript 从Firebase获取数据会记录正确的值,但返回“0”;“未定义”;,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我目前正在使用此功能从我的Firebase项目中获取数据: function getv(user) { var ref = firebase.database().ref('/users/'+user+'/points'); ref.once("value", function(snapshot) { console.log(snapshot.val()); }); } 但是,如果在控制台中运行此操作,则会得到“undefined”,然后是值: 如果
function getv(user)
{
var ref = firebase.database().ref('/users/'+user+'/points');
ref.once("value", function(snapshot) {
console.log(snapshot.val());
});
}
但是,如果在控制台中运行此操作,则会得到“undefined”,然后是值:
如果我尝试将它赋给一个变量,然后得到值
x = getv('Donut')
console.log(x)
我只是“未定义”。老实说,我完全不知道为什么会发生这种事
任何帮助是感激的,我可以提供更多的信息,如果需要的话
编辑:将console.log(snapshot.val())
替换为return snapshot.val()
仍返回未定义的
编辑2:我尝试将我的函数转换为in-async函数,这将它转换为承诺,但它仍然返回未定义的
异步版本:
async function getv(user)
{
var ref = await firebase.database().ref('/users/'+user+'/points')
ref.once("value", async function(snapshot) {
return await snapshot.val()
});
}
getv
不返回任何内容,因此您得到了undefined
。将console.log(snapshot.val())
替换为return snapshot.val()
仍然返回未定义的内容。不幸的是,将我的函数转换为使用async
可能会重复。我已经用详细信息更新了我的帖子。getv
不返回任何内容,因此您得到了undefined
。将console.log(snapshot.val())
替换为return snapshot.val()
仍然返回未定义的内容。不幸的是,将我的函数转换为使用async
可能会重复。我已经用细节更新了我的帖子。