我在使用MongoDB、pyhton和angular查看在我的web应用程序上显示评论的引导卡时遇到问题。是否存在审阅ID问题

2024-04-25 23:36:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法将评论显示在我的web应用程序的引导卡上。我在前端遇到了几个错误。下面是一些例子,我觉得问题在于我的get函数调用了要显示在前端的评论

后端

@app.route("/api/v1.0/movies/<string:id>/movie_reviews", methods=["GET"])
def get_movie_reviews(id):
    data_to_return = []
    movie = moviescollection.find_one( { "_id" : ObjectId(id) }, { "movie_reviews": 1, "_id": 0 } )
    for movie_reviews in movie["movie_reviews"]:
        movie_reviews["_id"] = str(movie_reviews["_id"])
        data_to_return.append(movie_reviews)
    return make_response( jsonify( data_to_return ), 200 )

Movies.component.html

<div class="container">
    <div class="row">
        <div class="col-sm-12">
            <div class="card bg-light mb-3" *ngFor="let review of webService.reviews_list | async">
                <div class="card-header">
                    Review by {{ review.name }}
                </div>
                <div class="card-body">
                    {{ review.description }}
                    <hr>
                </div>
                <div class="card-footer">
                </div>
            </div>
        </div> 
    </div> 
</div>

Movies.component.ts

import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { WebService } from './web.service';

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

export class MoviesComponent {
    constructor(public webService: WebService,
        private route: ActivatedRoute) { }
    ngOnInit() {
        this.webService.getMovies();
        this.webService.getReviews(
            this.route.snapshot.params.id);
        this.webService.moviesSubject
            .subscribe(movies => {
                this.movie_list = movies
                console.log(this.movie_list)
            })
    };

    
    movie_list;
}

webserive.ts

export class WebService {
    private movie_list;
    moviesSubject = new Subject();
    constructor(private http: HttpClient) { }
    getMovies() {
        return this.http.get(
            'http://localhost:5000/api/v1.0/movies')
            .subscribe(response => {
                this.movie_list = response;
                this.moviesSubject.next(this.movie_list);
            })
    }

    getMovie(id) {
        return this.http.get(
            'http://localhost:5000/api/v1.0/movies/' + id)
            .toPromise();

    }

    private reviews_private_list;
    private reviewsSubject = new Subject<any>();
    reviews_list = this.reviewsSubject.asObservable();


    getReviews(id) {
        return this.http.get(
            'http://localhost:5000/api/v1.0/movies/' + id +
            '/movie_reviews')
            .subscribe(
                response => {
                    this.reviews_private_list = response;
                    this.reviewsSubject.next(
                        this.reviews_private_list);
                }
            )
    }
}