2017-08-31 52 views
0

請就以下問題提出建議。我想使用Sequelize來處理現有的數據庫。爲現有MySQL數據庫定義Sequelize模型

堆棧使用:

- Node.js v6.10.3 
- MySQL 2nd Gen 5.7 running on Google Cloud 
- Sequelize 4.7.5 

的MySQL包含1臺 - 'TEST_TABLE' 與列 'ID', '內容', '狀態',並擁有一些數據。

我想定義TestTable的模型,將 「解釋」 我的MySQL 'TEST_TABLE' 的sequelize,所以我跑:

常量連接=新Sequelize( 「數據庫名」, 「用戶」, 「通行證」,{ host:xxx.xxx.xxx.xxx, dialect:mysql }); 常量TestTable的= connection.define( 'TEST_TABLE',{ ID:{類型:Sequelize.INTEGER, 允許爲空:假的,獨特的:真, 的PrimaryKey:真,自動增量: TRUE}, 內容:{類型:Sequelize .STRING}, status:{type:Sequelize.STRING}, });

我得到的第一個驚喜是從此刻起Node完全忽略'test_table'的存在並創建它的'analogue'(???)。

C:\Users\dmitri\Desktop\app>node query.js

Executing (default): CREATE TABLE IF NOT EXISTS `test_tables` (`id` INTEGER NOT NULL auto_increment UNIQUE , `content` VARCHAR(255), `status` INTEGER, `createdAt` DATETIME NOT NULL, `updatedAt` DAT 
ETIME NOT NULL, UNIQUE `test_tables_id_unique` (`id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; 


Executing (default): SELECT `id`, `content`, `status`, `createdAt`, `updatedAt` FROM `test_tables` AS `test_table`; 
Executing (default): SHOW INDEX FROM `test_tables` 

現在的MySQL包含兩個表:

- 'test_table' (singular) 
- 'test_tables' (plural) identical to "test_table" but empty. 

我想SELECT ID ,內容FROM test_table`通過執行以下代碼Sequelize:

的相反的返回內容 'TEST_TABLE',節點保持忽略它:

C:\ Users \用戶的Dmitri \桌面\應用>節點query.js 執行(默認值):SELECT idcontent FROM test_tables AS test_table;

並返回[]。

它可能會自動跳轉到查詢'test_tables'而不是'test_table'的原因是什麼?我完全錯過了什麼嗎?

非常感謝!

回答

1

您應該在選項中指定表名稱。刪除這個新表格,添加表格名稱選項並重新提升應用程序。

connection.define('test_table', { 
    //.... your fields 
}, { 
    tableName: 'test_table' 
}); 

在旁註中,我喜歡用camelcase命名我的模型。 TestTableconnection.define('TestTable'...

相關問題