Я взял урок Angular Heroes и пытаюсь внедрить сервис pouchdb для обработки данных.Я сделал резервную копию оригинального сервиса для героев, который предоставил множество героев с различными атрибутами.Сейчас я пытаюсь изменить сервис для локального извлечения документов из pouchdb.Я изменил класс HeroService и настроил некоторые параметры в конструкторе.
import { Injectable, EventEmitter } from '@angular/core';
import {Hero} from './hero';
import {HEROES} from './mock-heroes';
import { Observable, of } from 'rxjs';
import {MessageService} from './message.service';
import PouchDB from 'pouchdb';
@Injectable({
providedIn: 'root'
})
export class HeroService {
private isInstantiated: boolean;
private database: any;
private listener: EventEmitter<any> = new EventEmitter();
constructor(private messageService:MessageService) {
if(!this.isInstantiated) {
this.database = new PouchDB("http://server:5984/db1");
this.isInstantiated = true;
}
}
getHeroes(): Observable<Hero[]> {
console.log(this.database.allDocs({include_docs: true}))
return of(this.database.allDocs({include_docs: true}));
this.messageService.add("HeroService: fetched heroes");
};
console.log показывает «ZoneAwarePromise» в файле hero.service.ts в строке console.log, но содержит массив данных и документов, которые я хочу показать на экране.Правильный ли я подход к этому, использую сервис для передачи данных из PouchDB в приложение Angular?
Компонент, в котором я пытаюсь показать эти данные, это файл "dashboard.components.ts", и вот новая функция:
getHeroes(): void {
console.log(this.heroes)
console.log(this.heroService.getHeroes());
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
//console.log(this)
}
Есть ли лучший подход кэтот?