2017-08-31 18 views
0

次の問題について助言してください。 Sequelizeを使用して既存のデータベースを操作したいと思います。使用既存のMySQLデータベースのSequelizeモデルを定義する

スタック: - 、列 'ID' と 'TEST_TABLE' 'コンテンツ'、 '状態' といくつかのデータを保持している

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

MySQLは1台が含まれています。

私はMySQLの 'TEST_TABLE' sequelizeのための "説明" でしょうTESTTABLEモデルを定義したいので、私は実行します。

のconst接続=新しいSequelize( "DBNAME"、 "ユーザー"、 "パス"、{ ホスト:xxx.xxx.xxx.xxx、 方言:mysql }); CONST TESTTABLE = connection.define( 'TEST_TABLE'、{ ID:{タイプ:Sequelize.INTEGER、 ALLOWNULL:偽、ユニーク:真、 主キー:真、オートインクリメント: 真}、 コンテンツ:{タイプ:Sequelize .STRING}、 ステータス:{タイプ:Sequelize.STRING}、 });

この瞬間から、ノードは 'test_table'の存在を完全に無視し、その 'アナログ'(???)を作成します。

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は、次の2つのテーブルが含まれます

:私は、次のSequelizeコードを実行することにより、 SELECT ID ,コンテンツFROM test_table`にしようとしています

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

を代わりに返す内容の

testTable 
    .findAll({attributes: ['id', 'content']}) 
    .then(result=>{ 
      console.log(result) 
     }) 

、ノードはそれを無視し続ける 'TEST_TABLE':

C:\ Users \ユーザードミトリ\ Desktopは、\ app>のノードが(デフォルト)を実行 query.js:test_tables FROM idcontentを選択するとtest_table;

を返し、[]を返します。

「test_table」ではなく「test_tables」というクエリに自発的にジャンプする理由は何ですか?ここに何かが完全に欠けていますか?

多くの感謝!

答えて

1

オプションにテーブル名を指定してください。この新しいテーブルを削除し、テーブル名オプションを追加して、アプリを再度持ち上げます。

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

私のモデルには、キャメルケースという名前が付けられています。 TestTable。同じように行くconnection.define('TestTable'...

関連する問題