编译后无法覆盖模型
Cannot override model once compiled
我正在设置一个将 server/user 信息保存在 MongoDB 数据库中的 discord 机器人。我在数据库模型中使用 discord 服务器 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.
错误。
在保存或更新文档后使用 delete mongoose.connection.model[collectionName]
解决了这个问题。
我正在设置一个将 server/user 信息保存在 MongoDB 数据库中的 discord 机器人。我在数据库模型中使用 discord 服务器 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.
错误。
在保存或更新文档后使用 delete mongoose.connection.model[collectionName]
解决了这个问题。