Can't get data for req.body with mean stack





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















Hey I can't seem to get any results whilst using the req.body. Trying to get out the data from my mongodbdatabase to json format Here is my code:



My server file:



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


Service file:



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


component.ts



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









share|improve this question

























  • are you sure that you need get instead of post?

    – Ishikawa Yoshi
    Nov 23 '18 at 14:10











  • your api method is get method and you want _id in req.body. which is wrong

    – Yogesh.Kathayat
    Nov 23 '18 at 14:18











  • either change you get request to post in server file and service file both or try to pass _id in req.params or req.query

    – Yogesh.Kathayat
    Nov 23 '18 at 14:19











  • You should follow the REST architecture and pass the id in the req.params.id That is, your url should be this.apiUrl + "/category/posts/" + _id. Also, your are currently never passing over the _id in any way to the server.

    – Jonathan Hamel
    Nov 23 '18 at 20:48




















0















Hey I can't seem to get any results whilst using the req.body. Trying to get out the data from my mongodbdatabase to json format Here is my code:



My server file:



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


Service file:



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


component.ts



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









share|improve this question

























  • are you sure that you need get instead of post?

    – Ishikawa Yoshi
    Nov 23 '18 at 14:10











  • your api method is get method and you want _id in req.body. which is wrong

    – Yogesh.Kathayat
    Nov 23 '18 at 14:18











  • either change you get request to post in server file and service file both or try to pass _id in req.params or req.query

    – Yogesh.Kathayat
    Nov 23 '18 at 14:19











  • You should follow the REST architecture and pass the id in the req.params.id That is, your url should be this.apiUrl + "/category/posts/" + _id. Also, your are currently never passing over the _id in any way to the server.

    – Jonathan Hamel
    Nov 23 '18 at 20:48
















0












0








0








Hey I can't seem to get any results whilst using the req.body. Trying to get out the data from my mongodbdatabase to json format Here is my code:



My server file:



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


Service file:



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


component.ts



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









share|improve this question
















Hey I can't seem to get any results whilst using the req.body. Trying to get out the data from my mongodbdatabase to json format Here is my code:



My server file:



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


Service file:



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


component.ts



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






javascript angular






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 20:32









Neil Lunn

101k23179187




101k23179187










asked Nov 23 '18 at 14:02









testerdude55testerdude55

1




1













  • are you sure that you need get instead of post?

    – Ishikawa Yoshi
    Nov 23 '18 at 14:10











  • your api method is get method and you want _id in req.body. which is wrong

    – Yogesh.Kathayat
    Nov 23 '18 at 14:18











  • either change you get request to post in server file and service file both or try to pass _id in req.params or req.query

    – Yogesh.Kathayat
    Nov 23 '18 at 14:19











  • You should follow the REST architecture and pass the id in the req.params.id That is, your url should be this.apiUrl + "/category/posts/" + _id. Also, your are currently never passing over the _id in any way to the server.

    – Jonathan Hamel
    Nov 23 '18 at 20:48





















  • are you sure that you need get instead of post?

    – Ishikawa Yoshi
    Nov 23 '18 at 14:10











  • your api method is get method and you want _id in req.body. which is wrong

    – Yogesh.Kathayat
    Nov 23 '18 at 14:18











  • either change you get request to post in server file and service file both or try to pass _id in req.params or req.query

    – Yogesh.Kathayat
    Nov 23 '18 at 14:19











  • You should follow the REST architecture and pass the id in the req.params.id That is, your url should be this.apiUrl + "/category/posts/" + _id. Also, your are currently never passing over the _id in any way to the server.

    – Jonathan Hamel
    Nov 23 '18 at 20:48



















are you sure that you need get instead of post?

– Ishikawa Yoshi
Nov 23 '18 at 14:10





are you sure that you need get instead of post?

– Ishikawa Yoshi
Nov 23 '18 at 14:10













your api method is get method and you want _id in req.body. which is wrong

– Yogesh.Kathayat
Nov 23 '18 at 14:18





your api method is get method and you want _id in req.body. which is wrong

– Yogesh.Kathayat
Nov 23 '18 at 14:18













either change you get request to post in server file and service file both or try to pass _id in req.params or req.query

– Yogesh.Kathayat
Nov 23 '18 at 14:19





either change you get request to post in server file and service file both or try to pass _id in req.params or req.query

– Yogesh.Kathayat
Nov 23 '18 at 14:19













You should follow the REST architecture and pass the id in the req.params.id That is, your url should be this.apiUrl + "/category/posts/" + _id. Also, your are currently never passing over the _id in any way to the server.

– Jonathan Hamel
Nov 23 '18 at 20:48







You should follow the REST architecture and pass the id in the req.params.id That is, your url should be this.apiUrl + "/category/posts/" + _id. Also, your are currently never passing over the _id in any way to the server.

– Jonathan Hamel
Nov 23 '18 at 20:48














2 Answers
2






active

oldest

votes


















0














your api method is get method and you want _id in req.body. which is wrong.

you need to either change you get request to post in server file and service file both or try to pass _id in req.params or req.query:-



If you pass _id as req.query :-



your server code will be like:-



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


service file



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


component.ts will be same.



and if you want to use post method to check for req.body then your code will be changed as following:-



your server code will be like:-



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


service file



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


component.ts will be same.






share|improve this answer































    0














    Following REST architecture to get resources, you should pass the the _id in the get request parameters. You can also validate your id parameter making sure the passed id is a number using a simple regex pattern



    Express route



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


    service file



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


    component file



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


    As a good practice, you should also keep track of your subscriptions and unsubscribe from them when you are done or on component destroy, or use the first operator to unsubscribe after first subscription.






    share|improve this answer
























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53448121%2fcant-get-data-for-req-body-with-mean-stack%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      your api method is get method and you want _id in req.body. which is wrong.

      you need to either change you get request to post in server file and service file both or try to pass _id in req.params or req.query:-



      If you pass _id as req.query :-



      your server code will be like:-



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


      service file



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


      component.ts will be same.



      and if you want to use post method to check for req.body then your code will be changed as following:-



      your server code will be like:-



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


      service file



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


      component.ts will be same.






      share|improve this answer




























        0














        your api method is get method and you want _id in req.body. which is wrong.

        you need to either change you get request to post in server file and service file both or try to pass _id in req.params or req.query:-



        If you pass _id as req.query :-



        your server code will be like:-



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


        service file



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


        component.ts will be same.



        and if you want to use post method to check for req.body then your code will be changed as following:-



        your server code will be like:-



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


        service file



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


        component.ts will be same.






        share|improve this answer


























          0












          0








          0







          your api method is get method and you want _id in req.body. which is wrong.

          you need to either change you get request to post in server file and service file both or try to pass _id in req.params or req.query:-



          If you pass _id as req.query :-



          your server code will be like:-



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


          service file



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


          component.ts will be same.



          and if you want to use post method to check for req.body then your code will be changed as following:-



          your server code will be like:-



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


          service file



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


          component.ts will be same.






          share|improve this answer













          your api method is get method and you want _id in req.body. which is wrong.

          you need to either change you get request to post in server file and service file both or try to pass _id in req.params or req.query:-



          If you pass _id as req.query :-



          your server code will be like:-



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


          service file



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


          component.ts will be same.



          and if you want to use post method to check for req.body then your code will be changed as following:-



          your server code will be like:-



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


          service file



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


          component.ts will be same.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 '18 at 14:24









          Yogesh.KathayatYogesh.Kathayat

          458411




          458411

























              0














              Following REST architecture to get resources, you should pass the the _id in the get request parameters. You can also validate your id parameter making sure the passed id is a number using a simple regex pattern



              Express route



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


              service file



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


              component file



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


              As a good practice, you should also keep track of your subscriptions and unsubscribe from them when you are done or on component destroy, or use the first operator to unsubscribe after first subscription.






              share|improve this answer




























                0














                Following REST architecture to get resources, you should pass the the _id in the get request parameters. You can also validate your id parameter making sure the passed id is a number using a simple regex pattern



                Express route



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


                service file



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


                component file



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


                As a good practice, you should also keep track of your subscriptions and unsubscribe from them when you are done or on component destroy, or use the first operator to unsubscribe after first subscription.






                share|improve this answer


























                  0












                  0








                  0







                  Following REST architecture to get resources, you should pass the the _id in the get request parameters. You can also validate your id parameter making sure the passed id is a number using a simple regex pattern



                  Express route



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


                  service file



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


                  component file



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


                  As a good practice, you should also keep track of your subscriptions and unsubscribe from them when you are done or on component destroy, or use the first operator to unsubscribe after first subscription.






                  share|improve this answer













                  Following REST architecture to get resources, you should pass the the _id in the get request parameters. You can also validate your id parameter making sure the passed id is a number using a simple regex pattern



                  Express route



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


                  service file



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


                  component file



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


                  As a good practice, you should also keep track of your subscriptions and unsubscribe from them when you are done or on component destroy, or use the first operator to unsubscribe after first subscription.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 23 '18 at 20:54









                  Jonathan HamelJonathan Hamel

                  789615




                  789615






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53448121%2fcant-get-data-for-req-body-with-mean-stack%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      這個網誌中的熱門文章

                      Academy of Television Arts & Sciences

                      L'Équipe

                      1995 France bombings