使用访存添加Omdb Api?

时间:2019-01-29 07:29:58

标签: javascript database angular fetch

我正在尝试通过访存使用OMDB api,并且在网络中看到我的数据库正在工作。 但是它没有显示在我的Angular 6页面上。 我在这段代码中缺少什么?

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class DataService {

  constructor(private http: HttpClient) { }

  getData() {
    return fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b'); 
  } 
}

还有这个

import { DataService } from './../data.service';
import { Component, OnInit } from '@angular/core';
import {Observable} from 'rxjs';

@Component({
  selector: 'app-movie-list',
  templateUrl: './movie-list.component.html',
  styleUrls: ['./movie-list.component.css']
})
export class MovieListComponent implements OnInit {

  movies = [
    {Title: 'Harry Potter'},
    {Title: 'Space Jam'}
  ]

  constructor(private data:DataService) { }

  ngOnInit() {
    // fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b')
    //   .then(response => response.json())
    //   .then( res => this.movies = res);

    this.data.getData()
      .then((response) => {response.json()
      .then((data)=> {this.data = data;
      });
    });
  }

还有这个

<p>
  movie-list works!
</p>

<div class="card">
  <ul>
    <li *ngFor="let movie of movies">
      <h2>{{movie.Title}}</h2>
      <h3>{{movie.Plot}}</h3>
    </li>
  </ul>
</div>

这就是我得到的...看下面的图片。

enter image description here

我该怎么做才能从数据库中查看标题和情节?

谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我认为response.json()必须与fetch一起

getData() {
  return fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b')
    .then((response) => {
      response.json()
    });
}

this.data.getData().then((data) => {
  this.data = data;
});

此外,响应是一个对象,因此您需要将该对象推送到数组以使用*ngFor

DEMO

答案 1 :(得分:1)

您尚未将获取的数据添加到电影阵列中。

movies = [
{Title: 'Harry Potter'},
{Title: 'Space Jam'}]

这就是为什么您看不到所需数据的原因。

编辑:您可以尝试执行以下操作:

    let movies = [];

    function doFetch() {
        fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b', {
            method: "get"
        }).then(function (response) {
            return response.text();
        }).then(function (text) {
            let json = JSON.parse(text);
            let data = { Title: json.Title, Plot: json.Plot }
            movies.push(data);
        });
    }

    doFetch();

这样,您将用数据填充数组以供以后显示。