【发布时间】:2017-06-12 14:50:25
【问题描述】:
我目前正在使用 AngularFire2 开发 Angular 2 项目,并且正在尝试将 FirebaseListObservable 转换为 Promise。我知道这没有多大意义,因为 Observables 更有用,但这个函数将成为另一个函数的一部分,其中多个 Promise 被链接。而且我不熟悉如何在一系列承诺中订阅 Observables ......该函数在服务中执行,但它似乎没有返回任何内容。 基本上,我想要做的是检查 Firebase 列表是否已经存在具有特定名称的对象并返回 true 或 false。
服务
constructor(private _af: AngularFire) { }
nameExists(name: string): Promise<boolean> {
return this._af.database.list('users')
.map(users => {
let exists = false;
users.forEach(user => {
if(user.name.toLowerCase() === name.toLowerCase()) {
console.log('Name already exists!');
exists = true;
}
});
return exists;
}).toPromise();
}
组件
constructor(private _usersService: UsersService) { }
check(name) {
this._usersService.nameExists(name)
.then(bool => console.log(bool));
}
因此,当有匹配项时,该函数将被执行并且在打印到控制台时似乎可以正常工作。但是,组件中的 console.log() 不会被执行。我想“那么”部分永远不会到达。另外,有没有办法在找到匹配项后停止 forEach 循环?
任何帮助将不胜感激,因为我根本找不到任何答案。
【问题讨论】:
-
在你的组件中是
_dibbService假设是_usersService? -
是的,对不起!我在复制代码时切换了它们。
标签: typescript angularfire2 angular2-observables