续集:如何从现有数据库导入定义


即使

我正在使用现有数据库,我是否需要手写 Sequelize 的模型定义。

如果不是必需的,那么如何在现有数据库中使用 Sequelize?

我已经在 Doctrine 中定义了数据库的模式,所以我不想再编写另一组模型定义。

该项目旨在从现有模式创建 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它。

使用Sequelize,您必须在代码中定义模型的结构。这样做,Sequelize 会假定特定的数据库架构,除非某些内容被覆盖。简而言之:不,续集不能镜像数据库。

希望对:)有所帮助

最新更新