所以,我一直在与MongoDB工作几天,我一直在做每个服务器静音角色命令,但当我做设置静音角色命令,当使用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)
这些值是在第一次使用时注册的,但是一旦它们存在,它们就不会更新。
你把事情弄得太复杂了。为什么你先找到,然后再找到,然后更新?只需执行以下流程
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
}