sql >> Base de Datos >  >> NoSQL >> MongoDB

Datos nulos después de guardar la entidad con Moongose ​​y GraphQL

Estás mezclando Promises y callbacks. exec() devolverá una Promesa, pero solo si no se le ha pasado ningún argumento. Además, debe devolver la Promesa devuelta por exec() .

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

Puedes limpiar esto un poco más:

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

Si necesita transformar los resultados devueltos por findById antes de entregárselos al cliente:

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