我是node和firebase的初学者,我不知道如何在这里获得正确的输出值。 在控制台中,我得到了正确的值,但返回值是无关紧要的。
function Emoji() {
var ref = firebase.database().ref('users').child('9ifrkEw7YjSRGtiaFFHT1rzieDA2');
this.getEmoji = function () {
ref.once('value').then(function (snapshot) {
console.log(snapshot.val().emoji); //displays the value from database
return String(snapshot.val().emoji); //displays undefiened
});
}
}
答案 0 :(得分:1)
您的return语句实际上只是从您传递给then()
的匿名函数返回。它没有从this.getEmoji
返回。当您致电getEmoji
时,它会立即返回 ,一段时间后您的数据库查询将生成结果。数据库查询是异步,因此您应该通过返回使用查询结果解析的承诺来使getEmoji
异步。 getEmoji
的调用者可以使用该promise的then()方法来接收结果。