我有一个初始化firebase数据库的js文件,我想连接到firebase实时数据库并获取相关信息。
我正在调用的函数:
get getName() {
var ref = firebase.database().ref('variable').child('variable').child('variable');
ref.on('value', gotData, errData);
function gotData(data) {
console.log(data.val());
console.log(data.val().ogrIsim + 'getname calisti');
console.log(String(data.val().ogrIsim));
this.setState({
name: (data.val().ogrIsim)
});
// return String(data.val().ogrIsim);
}
function errData(err) {
console.log('errorrrr!!!' + err);
}
}
console.log(data.val()。[variableName]);我将控制台打印为一行中的字符串,但是我无法更改它,因为它说在setstate e中存在一个不是字符串的对象。我应该如何进行?
和错误消息:
答案 0 :(得分:1)
发生错误消息是因为this
内部的gotData
与外部的含义不同。
有很多方法可以解决此问题,但是在这种情况下,显式bind()
可能最简单:
var ref = firebase.database().ref('variable').child('variable').child('variable');
ref.on('value', gotData, errData);
function gotData(data) {
this.setState({ name: (data.val().ogrIsim) });
}.bind(this);
function errData(err) {
console.log('errorr' + err);
}
有关更多信息,请参见How to access the correct `this` inside a callback?