编译后无法覆盖模型

时间:2019-06-21 01:31:48

标签: mongoose mongoose-schema

我正在设置一个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.错误。

1 个答案:

答案 0 :(得分:0)

在保存或更新文档后,使用delete mongoose.connection.model[collectionName]解决了这个问题。