Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
642 views
in Technique[技术] by (71.8m points)

node.js - Sequelize: how to import definitions from an existing database

Am I required to handwrite the model definitions for Sequelize even if I'm working off of an existing database.

If it's not required, then how does one go about using Sequelize with an existing database?

I've already defined the database's schema in Doctrine, so I'd rather not have to write another set of model definitions again.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This project aims to create Sequelize models from existing schema https://github.com/sequelize/sequelize-auto

Sequelize-Auto

A tool to automatically generate models for SequelizeJS via the command line.

Install:

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

Example

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

Produces a file/files such as ./models/Users.js which looks like this:

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

Which makes it easy for you to simply Sequelize.import it.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...