web-dev-qa-db-fra.com

Sequelize: comment importer des définitions à partir d'une base de données existante

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.

44
dvc

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 :)

9
sdepold

Ce projet vise à créer des modèles Sequelize à partir d'un schéma existant https://github.com/sequelize/sequelize-auto

Sequelize-Auto

Un outil pour générer automatiquement des modèles pour SequelizeJS via la ligne de commande.

Installer:

npm install -g sequelize-auto

Usage:

sequelize-auto -h <Host> -d <database> -u <user> -x [password] -p [port]  --dialect [dialect] -c [/path/to/config] -o [/path/to/models]

Options:

  -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.

81
Jack Miner Ewes