У меня есть модель под названием User, но Sequelize ищет таблицу USERS всякий раз, когда я пытаюсь сохранить ее в БД. Кто-нибудь знает, как настроить Sequelize на использование единственных имен таблиц? Спасибо.
109
У меня есть модель под названием User, но Sequelize ищет таблицу USERS всякий раз, когда я пытаюсь сохранить ее в БД. Кто-нибудь знает, как настроить Sequelize на использование единственных имен таблиц? Спасибо.
user
- зарезервированное слово, у вас будет множество проблем, если вы действительно попытаетесь создать таблицу с таким именем.user
не зарезервированное слово, а ключевое слово. Хотя у вас не возникнет проблем с его использованием, лучше избегать этого. dev.mysql.com/doc/refman/5.5/en/keywords.htmlОтветы:
В документации указано, что вы можете использовать свойство
freezeTableName
.Взгляните на этот пример:
источник
freezeTableName: true
не работает в последней версии sequelize. Любое другое решение?freezeTableName
является то, что он также предотвращает ввод sqlz в нижний регистр имен таблиц и столбцов. Это означает, что позже, когда вы будете вручную писать SQL для рытья данных, вам придется иметь дело с именами в смешанном регистре (что бы это ни значило для вашего диалекта). На pg это означает необходимость заключать каждое имя в смешанном регистре в двойные кавычки - yuk! Хотелось бы, чтобы мы могли отказаться от множественного числа, но сохранить складывание регистра ...define
имеетtableName
возможность явного переопределения.freezeTableName: true
в дополнениеmodelName: 'singularName'
Хотя принятый ответ верен, вы можете сделать это один раз для всех таблиц, вместо того, чтобы делать это отдельно для каждой. Вы просто передаете аналогичный объект параметров в конструктор Sequelize, например:
Теперь, когда вы определяете свои сущности, вам не нужно указывать
freezeTableName: true
:источник
Если вам нужно иметь разные имена моделей для определений единственного и множественного числа, вы можете передать имя в качестве параметра в опциях модели.
Взгляните на этот пример:
это вернет "person" как объект, когда запрашивается одна запись, и "people" как массив, когда мы получаем несколько записей.
источник