firebase-angular2映射问题

时间:2016-02-23 21:45:48

标签: firebase angular

Angular 2相当新。我一直在使用firebase-angular2来创建服务。 我在这里运行了firebase-angular2演示https://github.com/KallynGowdy/firebase-angular2-demo但是当我运行它时出现以下错误

EXCEPTION:TypeError:heroes.map不是函数 angular2.dev.js:23083 EXCEPTION:TypeError:heroes.map不是函数

据我所知,它是指ts / firebase-heros.service.ts上的这段代码

import {Injectable} from "../../node_modules/angular2/core";
import {HeroService} from "./hero.service";
import {Observable} from "../../node_modules/rxjs/Rx";
import {FirebaseService} from '../../node_modules/firebase-angular2/core';
import {Hero} from "./../interfaces/hero";

@Injectable()
export class FirebaseHeroService extends HeroService {

private service:FirebaseService;

constructor(firebaseService:FirebaseService) {
    this.service = firebaseService.child('heroes');
}

getHeroes() {
    var service = this.service;
    return service.value.map((heroes) => {
        return heroes.map((h, i) => {
            // TODO: Cleanup
            return {
                id: h.id,
                name: h.name,
                save: function () {
                    return service.child(i.toString()).setData({
                        id: this.id,
                        name: this.name
                    });
                }
            }
        })
    });
}
}

可能导致此问题的任何想法? 提前谢谢

1 个答案:

答案 0 :(得分:2)

heroes此行不是数组,这就是您收到错误的原因:

return service.value.map((heroes) => {
  console.log(heroes);
  ...

如果您记录它的值,您可以检查它的类型并采取适当的措施。如果它是响应,您可能需要在进一步处理之前将其转换为JSON

return service.value
 .map(response => response.json())
 .map((heroes) => {...