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

dvc*_*dvc 44 node.js sequelize.js

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

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

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

Jac*_*wes 79

该项目旨在从现有模式https://github.com/sequelize/sequelize-auto创建Sequelize模型

Sequelize-汽车

一种SequelizeJS通过命令行自动生成模型的工具.

安装:

npm install -g sequelize-auto
Run Code Online (Sandbox Code Playgroud)

用法:

sequelize-auto -h <host> -d <database> -u <user> -x [password] -p [port]  --dialect [dialect] -c [/path/to/config] -o [/path/to/models]
Run Code Online (Sandbox Code Playgroud)

选项:

  -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
Run Code Online (Sandbox Code Playgroud)

sequelize-auto -o "./models" -d sequelize_auto_test -h localhost -u daniel -p 5432 -x my_password -e postgres
Run Code Online (Sandbox Code Playgroud)

生成一个文件/文件./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
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

这让你很容易就Sequelize.import可以了.

  • 您可能想要重新读取StackOverflow Do-s&DO-s.避免StackOverflow网络违反规则"不发布仅链接答案"意味着帖子应包含答案和预期的链接以进一步阅读,因为如果引用的URL页面更改或消失,您的StackOverflow答案仍然存在有效和有用.您可能需要重新编辑帖子,以避免来自StackOverflow版主的任何负面反应. (5认同)
  • 关于 sequelize-auto 项目的一个主要注意事项:它 **DID NOT** 支持导入 **associations** YET(截至 2016 年 5 月)。因此,您应该在代码中“手动”定义它们。但是当您已经导入了基本的数据库结构时,它肯定会容易得多! (2认同)

sde*_*old 9

使用Sequelize,您必须在代码中定义模型的结构.这样做,Sequelize假定一个特定的数据库模式,除非被覆盖.所以简而言之:不,sequelize不能镜像数据库.

希望有帮助:)