MongoDB findOneAndUpdate не обновляется

#javascript #mongodb #mongoose #discord.js

Вопрос:

Итак, я работал с MongoDB в течение нескольких дней, я выполнял команду отключения звука для каждого сервера, но когда я выполнял команду set muterole, при использовании функции findOneAndUpdate, похоже, значения не обновляются, я искал другие ответы и перепробовал несколько из них, но, похоже, это не работает, это мой код:

 muteSchema.findOne(
                {
                    guildId: message.guild.id
                }, async (err, data) => {
                    if(err) console.log(err)
                    if(data)
                    {
                        muteSchema.findOneAndUpdate(
                            {
                                guildId: data.guildId
                            },
                            {
                                guildId: message.guild.id,
                                roleId: role.id
                            }
                        )
                    }
                    else
                    {
                        data = new muteSchema(
                            {
                                guildId: message.guild.id,
                                roleId: role.id
                            }
                        )
   
                        data.save().catch((err) => console.log(err) )
                    }
                }
            )
 

У меня есть импорт muteSchema сверху, и это мой файл muteSchema:

 const mongoose = require("mongoose")

let MuteroleSchema = mongoose.Schema(
    {
        guildId: String,
        roleId: String
    },
    {
        strict: false
    }
)

module.exports = mongoose.model("muterole", MuteroleSchema)
 

Значения регистрируются при первом использовании, но они не обновляются, как только появляются.

Ответ №1:

Вы делаете вещи слишком сложными для себя. Почему вы сначала находите, потом снова находите, а затем обновляете? Просто следуйте следующему потоку

 Update using filter
 

Пример кода:

 exports.updateToken = async (id, forgotToken) => {//function
return User.updateOne({ _id: id }, { resetPasswordToken: forgotToken });//_id:id is a filter while the reset is code to update 
}