【发布时间】:2016-04-06 08:03:45
【问题描述】:
我试图弄清楚为什么我在 //1 和 //2 中获取对象,但在 //3 中获取未定义...
我正在用 Typescript 和 Firebase 后端处理 Angular2。
我在这里做错了什么,在我看来就像一个菜鸟的错误......
getPlayers() {
var snap;
this.playersRef.once('value', function (snapshot) {
snap = snapshot.val();
//1
console.info("snap.val()" + snapshot.val());
//2
console.info("var snap" + snap);
}
);
//3
console.info("var snap loc 2" + snap);
//return new Promise<Player[]>(resolve => resolve(snap));
}
///////// 编辑/////////////////////////////// ////////
有人可以解释这与 Firebase nosql DB 有何关系(在 Angualr2 应用程序内部)。
在我的 app.component.ts 文件中我有这个
constructor(private _playerService: PlayerService){}
getPlayers(){
this._playerService.getPlayers().then(res => this.players = res);
}
ngOnInit(){
this.getPlayers();
}
在 player.service.ts 文件中我有这个
getPlayers() {
this.playersRef.once('value', function (snap){
return snap.val();
});
}
我总是得到 TypeError: this._playerService.getPlayers(...) is undefined
我读过一些像这样的文章 https://www.firebase.com/blog/2016-01-21-keeping-our-promises.html
但我仍然不知道如何让所有东西协同工作。
此外,当我尝试使用文章中的承诺(而不是回调)编辑我的getPlayer() 时,我收到一个异常,指出.once() 至少需要两个参数,所以我不确定文章的工作情况如何都是.once('value').then()
【问题讨论】:
-
是的,与 Firebase 异步