#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
}