Bạn đang kết hợp Lời hứa và cuộc gọi lại. exec()
sẽ trả về một Lời hứa, nhưng chỉ khi không có bất kỳ đối số nào được chuyển cho nó. Ngoài ra, bạn cần trả lại Lời hứa được trả lại bởi exec()
.
return budget.save().then((res) => {
return Budget.findById(res._id) // missing return here
.populate('User')
.populate('Vehicle')
.exec() // don't need anything else
})
Bạn có thể dọn dẹp điều này nhiều hơn một chút:
return budget.save()
.then(res => Budget.findById(res._id)
.populate('User')
.populate('Vehicle')
.exec())
Nếu bạn cần chuyển đổi kết quả trả về bởi findById
trước khi chuyển chúng cho khách hàng:
return budget.save()
.then(res => Budget.findById(res._id)
.populate('User')
.populate('Vehicle')
.exec())
.then(res => {
res.foo = 'Foo'
return res
})