Невозможно переопределить модель после компиляции - PullRequest
0 голосов
/ 21 июня 2019

Я устанавливаю бот-диск, который сохраняет информацию о сервере / пользователе в базе данных MongoDB. Я использую идентификатор сервера Discord для имени коллекции в моделях базы данных. Когда я пытаюсь сохранить данные в коллекцию, используя то же имя коллекции (с тем же идентификатором сервера), я получаю сообщение об ошибке, в котором говорится, что модель не может быть переопределена после компиляции. Как я могу это исправить и по-прежнему использовать идентификатор сервера в качестве имени коллекции?

Я попытался передвигаться по коду, чтобы заставить его не делать эту ошибку. Я хочу использовать его в другом файле, но не знаю, как отправить идентификатор сервера в файл для имени коллекции.

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()
}

Я хочу получить документы для добавления в коллекцию, используя идентификатор сервера, с которого они приходят без ошибки, но вместо этого я получаю ошибку UnhandledPromiseRejectionWarning: OverwriteModelError: Cannot overwrite model once compiled..

1 Ответ

0 голосов
/ 21 июня 2019

Решено с помощью delete mongoose.connection.model[collectionName] после сохранения или обновления документа.

...