4

The method is returning undefined. I.g., finishing before the findOneAndUpdate resolves.

exports.updateMovie = async (movie) => {
    try {
        return await Movie.findOneAndUpdate({_id: movie._id}, movie, {upsert: true, new: true}, (err, result) => {
            return result;
        });
    } catch(err) {
        return err;
    }
};
Victor Augusto
  • 2,406
  • 24
  • 20

1 Answers1

13

As the findOneAndUpdate doc says, the method without a callback returns a Query which has to be executed. So to make the method work it should look like:

exports.updateMovie = async (movie) => {
    try {
        return await Movie.findOneAndUpdate({_id: movie._id}, movie, {upsert: true, new: true}).exec();
    } catch(err) {
        return err;
    }
};
Phil Dukhov
  • 67,741
  • 15
  • 184
  • 220
Victor Augusto
  • 2,406
  • 24
  • 20