Promiseとコールバックを混在させています。 exec()
Promiseを返しますが、引数が渡されていない場合に限ります。さらに、exec()
によって返されたPromiseを返す必要があります 。
return budget.save().then((res) => {
return Budget.findById(res._id) // missing return here
.populate('User')
.populate('Vehicle')
.exec() // don't need anything else
})
これをもう少しクリーンアップできます:
return budget.save()
.then(res => Budget.findById(res._id)
.populate('User')
.populate('Vehicle')
.exec())
findById
によって返される結果を変換する必要がある場合 クライアントに引き渡す前に:
return budget.save()
.then(res => Budget.findById(res._id)
.populate('User')
.populate('Vehicle')
.exec())
.then(res => {
res.foo = 'Foo'
return res
})