Suis-je obligé d'écrire à la main les définitions de modèle pour Sequelize même si je travaille à partir d'une base de données existante.
Si ce n'est pas nécessaire, comment utiliser Sequelize avec une base de données existante?
J'ai déjà défini le schéma de la base de données dans Doctrine, donc je préfère ne pas avoir à écrire un autre ensemble de définitions de modèle.
avec Sequelize vous devez définir la structure du modèle à l'intérieur de votre code. Ce faisant, Sequelize suppose un schéma de base de données spécifique, sauf si quelque chose est remplacé. Donc en bref: non, sequelize ne peut pas refléter la base de données.
J'espère que cela pourra aider :)
Ce projet vise à créer des modèles Sequelize à partir d'un schéma existant https://github.com/sequelize/sequelize-auto
Un outil pour générer automatiquement des modèles pour SequelizeJS
via la ligne de commande.
npm install -g sequelize-auto
sequelize-auto -h <Host> -d <database> -u <user> -x [password] -p [port] --dialect [dialect] -c [/path/to/config] -o [/path/to/models]
-h, --Host IP/Hostname for the database. [required]
-d, --database Database name. [required]
-u, --user Username for database. [required]
-x, --pass Password for database.
-p, --port Port number for database.
-c, --config JSON file for sending additional options to the Sequelize object.
-o, --output What directory to place the models.
-e, --dialect The dialect/engine that you're using: postgres, mysql, sqlite
Exemple
sequelize-auto -o "./models" -d sequelize_auto_test -h localhost -u daniel -p 5432 -x my_password -e postgres
Produit un ou des fichiers tels que ./models/Users.js
qui ressemble à ceci:
/* jshint indent: 2 */
module.exports = function(sequelize, DataTypes) {
return sequelize.define('Users', {
username: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null
},
touchedAt: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null
},
aNumber: {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null
},
id: {
type: DataTypes.INTEGER,
primaryKey: true
},
createdAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: null
},
updatedAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: null
}
});
};
Ce qui vous permet de simplement Sequelize.import
.