2017-08-31 5 views
0

Veuillez nous informer sur le problème suivant. Je voudrais utiliser Sequelize pour travailler avec la base de données existante.Définition du modèle Sequelize pour la base de données MySQL existante

Stack utilisé:

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

MySQL contient 1 table - 'test_table' avec id 'colonnes, le 'contenu', 'statut' et détient des données.

Je veux définir le modèle testTable qui "expliquer" mon MySQL 'test_table' pour sequelize, je lance:

connexion const = new Sequelize ("dbName", "utilisateur", "pass", { Hôte: xxx.xxx.xxx.xxx, dialecte: mysql }); const testTable = connection.define ('test_table', { id: {type: Sequelize.INTEGER, allowNull: false, unique: true, primaryKey: true, autoIncrement: true}, contenu : {type: Sequelize .STRING}, statut: {type: Sequelize.STRING}, });

Première surprise, à partir de ce moment, Node ignore complètement l'existence de 'test_table' et crée son '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` 

maintenant MySQL contient deux tables:

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

Je suis en train de SELECT id , contenu FROM test_table` en exécutant le code Sequelize suivant:

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

Au lieu de retourner le contenu de 'test_table', noeud maintient l'ignorer:

C: \ Users \ dmitri \ noeud Desktop \ app> query.js exécution (par défaut): SELECT id, content DE test_tables AS test_table;

et renvoie [].

Quelle peut être la raison pour laquelle il saute volontairement à interroger 'test_tables' au lieu de 'test_table'? Est-ce que je manque complètement quelque chose ici?

Merci beaucoup!

Répondre

1

Vous auriez dû spécifier le nom de la table dans les options. Supprimez cette nouvelle table, ajoutez l'option de nom de table et relancez l'application. Sur une note de côté, j'aime donner un nom à mes modèles avec camelcase. TestTable. Idem pour connection.define('TestTable'...