2016-02-23 7 views
0

Angular 2 довольно новый. Я создал firebase-angular2 для создания сервиса. Я побежал firebase-angular2 демо здесь https://github.com/KallynGowdy/firebase-angular2-demo, но когда я управлял этим я получаю следующую ошибкуfirebase-angular2 картирование проблема

ИСКЛЮЧЕНИЕ: TypeError: heroes.map не является функцией angular2.dev.js: 23083 ИСКЛЮЧЕНИЕ: TypeError: герои .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 
        }); 
       } 
      } 
     }) 
    }); 
} 
} 

Любые идеи о том, что может быть причиной этой проблемы ? заранее спасибо

ответ

2

heroes не массив на этой линии, поэтому вы получаете сообщение об ошибке:

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

При входе в это значение, которое вы можете проверить, что типа это и принять соответствующие меры. Если это ответ, возможно, вам придется преобразовать его в JSON до его дальнейшей обработки

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