Данные отсутствуют в ответе API в Angular 5? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть приложение Angular 5, которое получает свои данные через Rails API (на который ссылается localhost: 3000).Я получаю ответ точно так же, как и собираюсь, но в ответе отсутствует необходимое содержание.В объекте ответа отсутствуют пары ключ-значение, а не только значение, связанное с ключами.

Я думал, что это внутренняя проблема, но запуск сценария тестирования для него показывает, что он на самом деле отправляетиз данных, которые он должен, и мне интересно, где что-то может пойти не так.

В моем компоненте sitelist.component.ts

import { Component, Inject, OnInit, Input } from '@angular/core';
import { DataService } from '../data.service';
import {  Response } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';
import { HttpClient } from '@angular/common/http';
import { AuthService } from "../services/auth.service";

@Component({
  selector: 'app-sitelist',
  templateUrl: './sitelist.component.html',
  styleUrls: ['./sitelist.component.css']
})

export class SitelistComponent implements OnInit {
  sites;
  originals;
  this_site

constructor(private http: HttpClient, private _dataService: DataService, public authService: AuthService ) {}

ngOnInit() {

this.authService.getSites()
.map((res:Response) => (
  <any>res.json() 
 ))
.subscribe(data => {
   const copies = [];
   for(let item of data) {
     this.copy = this.copy(item);
     copies.push(this.copy);
   }
   this.originals = data;
   this.sites = copies;

 })
}

copy(Object: any):any{
  console.log(JSON.parse(JSON.stringify(Object)))
  return JSON.parse(JSON.stringify(Object))
 }
}

Запрос 'getSites' в сервисе auth.service.ts:

import { Injectable, OnInit } from '@angular/core';
import {Angular2TokenService} from "angular2-token";
import {Subject, Observable} from "rxjs";
import {Response} from "@angular/http";
import 'rxjs/add/operator/map';
import { HttpClient } from '@angular/common/http';
import { Router } from "@angular/router";
import { BehaviorSubject } from 'rxjs';
import { ThrowStmt } from '@angular/compiler';

@Injectable()
export class AuthService {
  current_route: string;
  current_id: string;
  route_with_id: string
  current_restructured_mp;

  userSignedIn$:Subject<boolean> = new Subject();

  constructor(public authService:Angular2TokenService,private router:Router,private http: HttpClient) {

    this.authService.validateToken().subscribe(

    res =>  res.status == 200 ? 
    this.userSignedIn$.next(res.json().success) : 
    this.userSignedIn$.next(false)
    )
  }

  getSites(){ 
    return this.authService.get('sites.json')
  }

Я копирую объект ответа в sitelist.component.ts как «копии», чтобы любые изменения / синтаксический анализ / и т. Д., Которые я передаю детям, не влияли на него.Когда я его утешаю, я получаю:

{
"address": null
"alerts": {count: 0, anomalies: Array(0)}
"device_count": 0
"historical_data": 
  {
   2018-09-30: {"anomalies": null},
   2018-09-29: {"anomalies": null}, 
  }
"id": 1
"latitude": "39.0"
"longitude": "-104.0"
"name": "Test Site"
}

Но я должен получать "осадки": num "рядом с каждой из" аномалий "по историческим данным.Есть ли что-то, что я делаю неправильно в моем служении или что-то, что может вызвать частичное отсутствие ответа?

Спасибо!Пожалуйста, дайте мне знать, если я смогу предоставить больше информации.

РЕДАКТИРОВАТЬ: Пары ключ / значение, которые я пропускаю, получены из API, отличного от внутреннего API.Может быть, я не получаю данные от него к моменту оценки?

...