Приведение Firestore, наблюдаемого в Angular машинописный класс - PullRequest
0 голосов
/ 02 мая 2020

Я относительно новичок в Firestore, но довольно долго работал в Angular. Сейчас я пытаюсь подключить свою базу данных в firestore к моему внешнему интерфейсу, и у меня возникли проблемы при попытке преобразовать наблюдаемые базы данных в класс заполнителя, который я использовал при тестировании внешнего интерфейса.

Я попробовал несколько различных методов отображения, а также использовал традиционный метод HttpClient, который используется в общей установке c Angular, но безуспешно. Я дам вам посмотреть на мой класс, а также мой запрос к серверу. Ответ работает нормально, я просто не могу заставить его выполнить приведение (в этом случае, когда я вызываю asyn c, он говорит мне, что do c .getName () не является функцией, несмотря на появление do c как тип проекта в моем коде, когда я отлаживаю). Буду признателен за любые отзывы или советы!

Запрос к серверу и приведение:

constructor(firestore: AngularFirestore) { 
    this.project = firestore.collection('projects').doc<project>('myProject').valueChanges().pipe(map(
      doc => {
            let myproject = new project(doc.getName(),doc.getTasks(),doc.getGroupMembers());
            console.log(myproject);
            return myproject;
        })
    );
    console.log(this.project);
  }

Класс проекта:

import {task} from 'src/task';
import { NgModuleFactoryLoader } from '@angular/core';
import { member } from './member';


export class project{

    private name;
    private tasks:task[];
    private members;
    private description;
    private incomplete=0;

    constructor(name, tasks, members){
        this.name = name;
        this.tasks = tasks;
        this.members = members;
    }
    findPercent(){
        this.incomplete = 0;
        this.tasks.forEach(job => {
            if(job.getStatus() =='Incomplete' || job.getStatus()=='In Progress'){
               this.incomplete=this.incomplete+1;
            }
        });
        return Math.floor(100*((this.tasks.length-this.incomplete)/this.tasks.length))+"%";
    }    
    getTasks(){
        return this.tasks;
    }
    getIncomplete(){
        return this.incomplete;
    }
    getGroupMembers(){
        return this.members.length;
    }
    getName(){
        return this.name;
    }
}

Я понимаю, что это, вероятно, какой-то дурак sh ошибка в неправильном понимании того, как данные извлекаются из наблюдаемой, поскольку для меня не имеет смысла использовать собственные методы для извлечения данных из Firestore. Но для этого случая я не смог найти более качественную информацию в Интернете о том, как подойти к ней, поэтому я решил спросить. Если в Интернете уже есть лучший источник документации, пожалуйста, укажите мне правильное направление! Еще раз спасибо!

...