我正在构建一个react应用程序,它在componentWillMount中从Firebase检索JSON对象。我已经设置了一个异步函数来调用Firebase,但它不会返回对象,而是回调函数本身。我对承诺感到有点困惑,需要澄清......
这是我的getMessages异步函数
import loadDB from './db';
// create a promise that returns snapshot.val
export default async (keyProp) => {
try {
const db = await loadDB()
const key = db.ref('hashtags/' + keyProp)
const response = await key.on('value', function(snapshot) {
snapshot.val(); //Firebase Object displays in console.log here
})
return response
}
catch(err) {
console.log('fetch failed', err);
return null
}
}
这是我的componentWillMount
import getMessages from '../lib/get-messages.js'
componentWillMount() {
const key = this.props.url.query.name
getMessages(key)
.then(function(messages){
// messages displays function (snapshot) {snapshot.val()}
// in console.log instead of my firebase object
console.log('msgs', messages)
})
}
我认为这个问题与const response
有关,而且它没有返回firebase对象..
答案 0 :(得分:0)
您需要从以下函数获得return
值:
const response = await key.on('value', function(snapshot) {
// snapshot.val(); --> this need to be returned
return snapshot.val();
})