MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Données nulles après l'enregistrement de l'entité avec Moongose ​​et GraphQL

Vous mélangez promesses et rappels. exec() renverra une Promise, mais seulement si aucun argument ne lui est transmis. De plus, vous devez renvoyer la promesse renvoyée par exec() .

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

Vous pouvez nettoyer un peu plus :

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

Si vous avez besoin de transformer les résultats renvoyés par findById avant de les remettre au client :

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