У меня есть модель под названием User, но Sequelize ищет таблицу USERS всякий раз, когда я пытаюсь сохранить в БД. Кто-нибудь знает, как установить Sequelize для использования уникальных имен таблиц? Благодарю.
Как заставить Sequelize использовать уникальные имена таблиц
Ответ 1
В docs вы можете использовать свойство freezeTableName
.
Пожалуйста, взгляните на этот пример:
var Bar = sequelize.define('Bar', { /* bla */ }, {
// don't add the timestamp attributes (updatedAt, createdAt)
timestamps: false,
// don't delete database entries but set the newly added attribute deletedAt
// to the current date (when deletion was done). paranoid will only work if
// timestamps are enabled
paranoid: true,
// don't use camelcase for automatically added attributes but underscore style
// so updatedAt will be updated_at
underscored: true,
// disable the modification of tablenames; By default, sequelize will automatically
// transform all passed model names (first parameter of define) into plural.
// if you don't want that, set the following
freezeTableName: true,
// define the table name
tableName: 'my_very_custom_table_name'
})
Ответ 2
В то время как принятый ответ верен, вы можете сделать это один раз для всех таблиц, а не для этого отдельно для каждого. Вы просто передаете аналогичный объект в конструктор Sequelize, например:
var Sequelize = require('sequelize');
//database wide options
var opts = {
define: {
//prevent sequelize from pluralizing table names
freezeTableName: true
}
}
var sequelize = new Sequelize('mysql://root:[email protected]:3306/mydatabase', opts)
Теперь, когда вы определяете свои сущности, вам не нужно указывать freezeTableName: true
:
var Project = sequelize.define('Project', {
title: Sequelize.STRING,
description: Sequelize.TEXT
})