无法获取具有均值堆栈的req.body的数据

时间:2018-11-23 14:02:42

标签: javascript angular

嘿,在使用req.body时似乎看不到任何结果。试图从我的mongodbdatabase中获取数据为json格式,这是我的代码:

我的服务器文件:

app.get('/api/category/posts', (req, res) => {
    Post.find({ categoryId: req.body._id }, function(err, posts) {
        res.json(posts);
    });
});

服务文件:

getPosts(_id): Observable<Post[]>{
            return this.http.get<Post[]>(this.apiUrl +"/category/posts");
              }

component.ts

this.appService.getPosts(_id)
    .subscribe(data =>this.posts=data);

2 个答案:

答案 0 :(得分:0)

您的api方法是get方法,并且您需要_id在req.body中。错了
您需要更改您的请求以同时发布到服务器文件和服务文件中,或者尝试在req.params或req.query中传递_id:-

如果您将_id作为req.query传递:-

您的服务器代码将类似于:-

app.get('/api/category/posts', (req, res) => {
    Post.find({ categoryId: req.query._id }, function(err, posts) {
        res.json(posts);
    });
});

服务文件

getPosts(_id): Observable<Post[]>{
            return this.http.get<Post[]>(this.apiUrl +"/category/posts"+'?_id='+_id);
              }

component.ts将相同。

,如果您想使用post方法检查req.body,则您的代码将更改为:-

您的服务器代码将类似于:-

app.post('/api/category/posts', (req, res) => {
    Post.find({ categoryId: req.body._id }, function(err, posts) {
        res.json(posts);
    }); });

服务文件

getPosts(_id): Observable<Post[]>{
            return this.http.post<Post[]>(this.apiUrl +"/category/posts",{_id:_id});
              }

component.ts将相同。

答案 1 :(得分:0)

遵循REST体系结构获取资源,您应该在get request参数中传递_id。您还可以使用简单的正则表达式模式来验证awk '/root/ { print $1, $2, $3 }' /var/log/wtmp 参数,以确保传递的id是数字

快速路线

id

服务文件

app.get('/api/category/posts/:id(\\d+)', (req, res) => {
    Post.find({ categoryId: req.params.id }, function(err, posts) {
        res.json(posts);
    });
});

组件文件

getPosts(_id): Observable<Post[]>{
    return this.http.get<Post[]>(`${this.apiUrl}/category/posts/${_id}`);
}

作为一种好的做法,您还应该跟踪订阅并在完成操作或销毁组件时取消订阅,或者在第一次订阅后使用this.appService.getPosts(_id) .subscribe(data =>this.posts=data); 运算符取消订阅。