Du blandar löften och återuppringningar. exec()
kommer att returnera ett löfte, men bara om det inte har några argument skickat till det. Dessutom måste du returnera löftet som returneras av exec()
.
return budget.save().then((res) => {
return Budget.findById(res._id) // missing return here
.populate('User')
.populate('Vehicle')
.exec() // don't need anything else
})
Du kan rensa upp det här lite mer:
return budget.save()
.then(res => Budget.findById(res._id)
.populate('User')
.populate('Vehicle')
.exec())
Om du behöver omvandla resultaten som returneras av findById
innan du lämnar över dem till klienten:
return budget.save()
.then(res => Budget.findById(res._id)
.populate('User')
.populate('Vehicle')
.exec())
.then(res => {
res.foo = 'Foo'
return res
})