web-dev-qa-db-ja.com

逐次化:既存のデータベースから定義をインポートする方法

既存のデータベースで作業している場合でも、Sequelizeのモデル定義を手書きする必要がありますか?.

必要ない場合は、既存のデータベースでSequelizeをどのように使用しますか?

データベースのスキーマは既にDoctrineで定義しているので、モデル定義の別のセットを再度記述する必要はありません。

44
dvc

sequelizeでは、コード内でモデルの構造を定義する必要があります。そうすることで、Sequelizeは、何かが上書きされない限り、特定のデータベーススキーマを想定します。つまり、sequelizeはデータベースをミラーリングできません。

それが役に立てば幸い:)

9
sdepold

このプロジェクトは、既存のスキーマからSequelizeモデルを作成することを目的としています https://github.com/sequelize/sequelize-auto

逐次化-自動

コマンドラインからSequelizeJSのモデルを自動的に生成するツール。

インストール:

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

sequelize-auto -o "./models" -d sequelize_auto_test -h localhost -u daniel -p 5432 -x my_password -e postgres

次のような./models/Users.jsなどのファイルを生成します。

/* 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
    }
  });
};

これにより、簡単にSequelize.import簡単に実行できます。

81
Jack Miner Ewes