我正在设置一个Discord机器人,该服务器将服务器/用户信息保存在MongoDB数据库中。我在数据库模型中使用不和谐服务器ID作为集合名称。当我尝试使用相同的集合名称(相同的服务器ID)将数据保存到集合时,出现错误消息,指出一旦编译该模型便无法覆盖该模型。如何解决此问题,但仍将服务器ID用作集合名称?
我尝试遍历代码以使其不执行此错误。我想在另一个文件中使用它,但是我不知道如何将服务器ID发送到集合名称的文件。
async function addUserFile(usr) {
const userSchema = mongoose.Schema({
userID: String,
warnings: Array,
moderations: Array,
currency: String,
})
let userFile = mongoose.model(usr.guild.id, userSchema)
let file = new userFile({
_id: mongoose.Types.ObjectId(),
userID: usr.id,
warnings: {},
modersations: {},
currency: 0
})
file.save()
}
我希望使用文档来源的服务器的ID将文档添加到集合中,而不会出现错误,但是我却遇到了UnhandledPromiseRejectionWarning: OverwriteModelError: Cannot overwrite model once compiled.
错误。
答案 0 :(得分:0)
在保存或更新文档后,使用delete mongoose.connection.model[collectionName]
解决了这个问题。