Ошибка MongooseError: «Model.findByIdAndUpdate ()» не может работать без модели как «это». Убедитесь, что вы не вызываете » новая модель.findByIdAndUpdate ()»

#javascript #node.js #mongoose

Вопрос:

Вот как я подключился к базе данных

 const dbConnection = async() => {
try {
    await mongoose.connect(process.env.MONGODB_CNN);
    console.log('Base de datos online');
} catch (error) {
    console.log(error);
    throw new Error('Error al inicializar la base de datos');
}
 

проблема возникает при обновлении

 const usuariosPut = (req = request, res = response) => {
const {id} = req.params;
const {password, google, correo, ...resto} = req.body;
if (password) {
    const salt = bcryptjs.genSaltSync();
    resto.password = bcryptjs.hashSync(password, salt);
}
const usuario = new Usuario.findByIdAndUpdate(id, resto);
res.json({
    msg: 'put API - controlador',
    id
});
 

Я получаю эту ошибку, это было бы очень полезно, так как я только начал

Ответ №1:

Потому что вы пытаетесь создать новый экземпляр модели модели, а не напрямую вызывать метод в модели.

 const usuario = new Usuario.findByIdAndUpdate(id, resto);
 

должно быть:

 const usuario = await Usuario.findByIdAndUpdate(id, resto);
 

Кроме того, я не вижу ни async одного ключевого слова или Promise.then() в вашем коде. Методы модели асинхронны, поэтому обязательно отметьте свою основную функцию async следующим образом:

 const usuariosPut = async (req = request, res = response) => {
 

Ответ №2:

Вы создавали Usuario модель раньше? Если это так, вам не нужно вызывать конструктор модели с new ключевым словом, ваш код должен выглядеть следующим образом:

 const usuario = await Usuario.findByIdAndUpdate(id, resto);