Mongoose .findByIdAndUpdate not updating record











up vote
1
down vote

favorite












I have an express route using mongoose. This .findByIdAndUpdate isn't working. I see the "removeId" come in, the second console.log shows the correct record... but it didn't update! Am I doing something wrong here?



router.post('/highlight', jsonParser, (req, res) => {
const { removeId, addId } = req.body;
console.log('removeId', removeId)
Article
.findByIdAndUpdate(removeId, {
featured: false
})
.then(updatedArticle => {
console.log('updated article', updatedArticle)









share|improve this question


























    up vote
    1
    down vote

    favorite












    I have an express route using mongoose. This .findByIdAndUpdate isn't working. I see the "removeId" come in, the second console.log shows the correct record... but it didn't update! Am I doing something wrong here?



    router.post('/highlight', jsonParser, (req, res) => {
    const { removeId, addId } = req.body;
    console.log('removeId', removeId)
    Article
    .findByIdAndUpdate(removeId, {
    featured: false
    })
    .then(updatedArticle => {
    console.log('updated article', updatedArticle)









    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      I have an express route using mongoose. This .findByIdAndUpdate isn't working. I see the "removeId" come in, the second console.log shows the correct record... but it didn't update! Am I doing something wrong here?



      router.post('/highlight', jsonParser, (req, res) => {
      const { removeId, addId } = req.body;
      console.log('removeId', removeId)
      Article
      .findByIdAndUpdate(removeId, {
      featured: false
      })
      .then(updatedArticle => {
      console.log('updated article', updatedArticle)









      share|improve this question













      I have an express route using mongoose. This .findByIdAndUpdate isn't working. I see the "removeId" come in, the second console.log shows the correct record... but it didn't update! Am I doing something wrong here?



      router.post('/highlight', jsonParser, (req, res) => {
      const { removeId, addId } = req.body;
      console.log('removeId', removeId)
      Article
      .findByIdAndUpdate(removeId, {
      featured: false
      })
      .then(updatedArticle => {
      console.log('updated article', updatedArticle)






      mongoose






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 17 at 19:52









      J Seabolt

      388219




      388219
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          0
          down vote













          It's a strange default but findByIdAndUpdate doesn't return the updated record by default. You have to pass {new:true} to get it.



          router.post('/highlight', jsonParser, (req, res) => {
          const { removeId, addId } = req.body;
          console.log('removeId', removeId)
          Article
          .findByIdAndUpdate(removeId,{new: true}, {
          featured: false
          })
          .then(updatedArticle => {
          console.log('updated article', updatedArticle)





          share|improve this answer




























            up vote
            0
            down vote













            Mongodb findOneAndUpdate method has an option called returnNewDocument which as per the documentation:




            Optional. When true, returns the updated document instead of the
            original document. Defaults to false.




            Mongoose wraps that method but it calls its pass through option new as per its code/documentation:



            outer.post('/highlight', jsonParser, (req, res) => {
            const { removeId, addId } = req.body;
            console.log('removeId', removeId)
            return Article.findByIdAndUpdate(removeId, {featured: false}, {new: true})
            .then(updatedArticle =>
            console.log('updated article', updatedArticle)
            )
            })


            Also do not forget the return your Article.findByIdAndUpdate in your post method.






            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',
              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%2f53354969%2fmongoose-findbyidandupdate-not-updating-record%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








              up vote
              0
              down vote













              It's a strange default but findByIdAndUpdate doesn't return the updated record by default. You have to pass {new:true} to get it.



              router.post('/highlight', jsonParser, (req, res) => {
              const { removeId, addId } = req.body;
              console.log('removeId', removeId)
              Article
              .findByIdAndUpdate(removeId,{new: true}, {
              featured: false
              })
              .then(updatedArticle => {
              console.log('updated article', updatedArticle)





              share|improve this answer

























                up vote
                0
                down vote













                It's a strange default but findByIdAndUpdate doesn't return the updated record by default. You have to pass {new:true} to get it.



                router.post('/highlight', jsonParser, (req, res) => {
                const { removeId, addId } = req.body;
                console.log('removeId', removeId)
                Article
                .findByIdAndUpdate(removeId,{new: true}, {
                featured: false
                })
                .then(updatedArticle => {
                console.log('updated article', updatedArticle)





                share|improve this answer























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  It's a strange default but findByIdAndUpdate doesn't return the updated record by default. You have to pass {new:true} to get it.



                  router.post('/highlight', jsonParser, (req, res) => {
                  const { removeId, addId } = req.body;
                  console.log('removeId', removeId)
                  Article
                  .findByIdAndUpdate(removeId,{new: true}, {
                  featured: false
                  })
                  .then(updatedArticle => {
                  console.log('updated article', updatedArticle)





                  share|improve this answer












                  It's a strange default but findByIdAndUpdate doesn't return the updated record by default. You have to pass {new:true} to get it.



                  router.post('/highlight', jsonParser, (req, res) => {
                  const { removeId, addId } = req.body;
                  console.log('removeId', removeId)
                  Article
                  .findByIdAndUpdate(removeId,{new: true}, {
                  featured: false
                  })
                  .then(updatedArticle => {
                  console.log('updated article', updatedArticle)






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 17 at 19:57









                  mr.freeze

                  7,19542433




                  7,19542433
























                      up vote
                      0
                      down vote













                      Mongodb findOneAndUpdate method has an option called returnNewDocument which as per the documentation:




                      Optional. When true, returns the updated document instead of the
                      original document. Defaults to false.




                      Mongoose wraps that method but it calls its pass through option new as per its code/documentation:



                      outer.post('/highlight', jsonParser, (req, res) => {
                      const { removeId, addId } = req.body;
                      console.log('removeId', removeId)
                      return Article.findByIdAndUpdate(removeId, {featured: false}, {new: true})
                      .then(updatedArticle =>
                      console.log('updated article', updatedArticle)
                      )
                      })


                      Also do not forget the return your Article.findByIdAndUpdate in your post method.






                      share|improve this answer

























                        up vote
                        0
                        down vote













                        Mongodb findOneAndUpdate method has an option called returnNewDocument which as per the documentation:




                        Optional. When true, returns the updated document instead of the
                        original document. Defaults to false.




                        Mongoose wraps that method but it calls its pass through option new as per its code/documentation:



                        outer.post('/highlight', jsonParser, (req, res) => {
                        const { removeId, addId } = req.body;
                        console.log('removeId', removeId)
                        return Article.findByIdAndUpdate(removeId, {featured: false}, {new: true})
                        .then(updatedArticle =>
                        console.log('updated article', updatedArticle)
                        )
                        })


                        Also do not forget the return your Article.findByIdAndUpdate in your post method.






                        share|improve this answer























                          up vote
                          0
                          down vote










                          up vote
                          0
                          down vote









                          Mongodb findOneAndUpdate method has an option called returnNewDocument which as per the documentation:




                          Optional. When true, returns the updated document instead of the
                          original document. Defaults to false.




                          Mongoose wraps that method but it calls its pass through option new as per its code/documentation:



                          outer.post('/highlight', jsonParser, (req, res) => {
                          const { removeId, addId } = req.body;
                          console.log('removeId', removeId)
                          return Article.findByIdAndUpdate(removeId, {featured: false}, {new: true})
                          .then(updatedArticle =>
                          console.log('updated article', updatedArticle)
                          )
                          })


                          Also do not forget the return your Article.findByIdAndUpdate in your post method.






                          share|improve this answer












                          Mongodb findOneAndUpdate method has an option called returnNewDocument which as per the documentation:




                          Optional. When true, returns the updated document instead of the
                          original document. Defaults to false.




                          Mongoose wraps that method but it calls its pass through option new as per its code/documentation:



                          outer.post('/highlight', jsonParser, (req, res) => {
                          const { removeId, addId } = req.body;
                          console.log('removeId', removeId)
                          return Article.findByIdAndUpdate(removeId, {featured: false}, {new: true})
                          .then(updatedArticle =>
                          console.log('updated article', updatedArticle)
                          )
                          })


                          Also do not forget the return your Article.findByIdAndUpdate in your post method.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Nov 18 at 20:33









                          Akrion

                          7,06611222




                          7,06611222






























                               

                              draft saved


                              draft discarded



















































                               


                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53354969%2fmongoose-findbyidandupdate-not-updating-record%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







                              Popular posts from this blog

                              Ottavio Pratesi

                              Tricia Helfer

                              15 giugno