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

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

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

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

Sequelize你必须在代码中定义模型的结构。 这样做,Sequelize会假设一个特定的数据库模式,除非被覆盖。 所以总之:不,sequelize不能镜像数据库。

希望帮助:)

这个项目旨在从现有模式创buildSequelize模型https://github.com/sequelize/sequelize-auto

Sequelize-汽车

通过命令行自动生成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