'Why didn't saving the mongoose work in this situation?

I have 2 cycles. The first one is for sorting posts. And the second one is to sort through the comments under these posts.

            Post.find().then(post =>{
              for(let i=0; i<post.length; i++){
                for(let ic=0; ic<post[i].comments.length; ic++){
                  if(post[i].comments[ic].user.secret_id == req.session.secret_id){
                    post[i].comments[ic].user.user_id = req.body.id;
                  }
                }
              }

              post.save()
               
            })

It's doesn't work

TypeError: post.save is not a function



Solution 1:[1]

It's because mongoose returns something called "mongoose object or mongo object" with additional metadata, not a plain javascript object when querying to database. So when you're performing "post[i].comments..." on the 5th line, it's modifying the mongoose object, you're trying to set a property which is calculated via for loop, but post isn't an array. There are this kind of typos, correct them and let's see what are the results.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 David Gabrielyan