title: What the right way to use Promises with mongoose?
body: <p>I'm new with Promises and in two days a already saw at least five ways to do.</p>
  
  <p>Some ways are older versions, others focus on other languages, so I decide to ask what should be used today.</p>
  
  <p>I did it this way, with 'err' and 'doc' parameters:</p>
  
  <pre><code>Proposals.findById({ ...body, user }, (err, doc) =&gt; 
      Advertisements.findOneAndUpdate(
          {_id:  body.advertisement}, {$push: {proposals: doc._id}}
      )
  )
  .then((Proposals) =&gt; Proposals.view())
  .then(success(res, 201))
  .catch(next)
  </code></pre>
  
  <p>And this:</p>
  
  <pre><code>Proposals.create({ ...body, user })
  .then((Proposals) =&gt; {
      Advertisements.findOneAndUpdate(
          {_id:  body.advertisement}, {$push: {proposals: Proposals._id}}
      )
      .catch(Advertisements)
  
      return Proposals.view()
  }) 
  .then(success(res, 201))
  .catch(next)
  </code></pre>
  
  <p>Without the "catch" and "return" itsn't work, but I don't know why exactly. :x</p>
  
  <p>The answer to 
  <a href="https://stackoverflow.com/questions/38860898/using-promises-in-mongoose-routes">Using Promises in Mongoose Routes</a>
  seems like a beautiful but I couldn't reproduce in code above.</p>
  
  <pre><code>return findUser(userId)
    .then((user) =&gt; findReceipt(user.bookName))
    .then((receipt) =&gt; res.status(200).json(receipt))
    .catch((err) =&gt; res.status(500).json(null))
  </code></pre>
  
  <p>Are any of these codes more right?
  Could you help me to fix the second code?</p>
  
  <p>Thank you.</p>