Не могу получить данные для req.body со средним стеком - PullRequest
0 голосов
/ 23 ноября 2018

Эй, я не могу получить никаких результатов при использовании req.body.Попытка получить данные из моей базы данных mongodb в формате 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");
              }

компонент.тс

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

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Следуя архитектуре REST для получения ресурсов, вы должны передать _id в параметрах запроса get.Вы также можете проверить параметр 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);

Рекомендуется также отслеживать свои подписки и отписываться от них, когда вы закончите или уничтожить компонент, или используйте оператор first, чтобы отписаться после первойподписки.

0 голосов
/ 23 ноября 2018

Ваш метод API - это метод get, и вы хотите _id в req.body.что неправильно.
вам нужно либо изменить запрос на публикацию в файле сервера, либо в файле службы, либо попробовать передать _id в req.params или req.query: -

Если выпередайте _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 будет таким же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...