MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Daten null nach dem Speichern der Entität mit Moongose ​​und GraphQL

Sie mischen Promises und Callbacks. exec() gibt ein Promise zurück, aber nur, wenn ihm keine Argumente übergeben wurden. Außerdem müssen Sie das Promise zurückgeben, das von exec() zurückgegeben wird .

return budget.save().then((res) => {
  return Budget.findById(res._id) // missing return here
    .populate('User')
    .populate('Vehicle')
    .exec() // don't need anything else
})

Sie können dies ein wenig mehr bereinigen:

return budget.save()
  .then(res => Budget.findById(res._id)
    .populate('User')
    .populate('Vehicle')
    .exec())

Wenn Sie die von findById zurückgegebenen Ergebnisse transformieren müssen bevor Sie sie dem Kunden übergeben:

return budget.save()
  .then(res => Budget.findById(res._id)
    .populate('User')
    .populate('Vehicle')
    .exec())
  .then(res => {
    res.foo = 'Foo'
    return res
  })