Sequelize: how to import definitions from an existing database

I'm very new to both Node.js and Sequelize but have enjoyed learning both of them. One question I can't seem to find an answer for, though, is whether I am required to handwrite the model definitions for Sequelize even if I'm working off of an existing database.

If that'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.

Thanks!

-------------Problems Reply------------

with Sequelize you have to define the structure of the model inside your code. Doing so, Sequelize assumes a specific database schema unless something is overwritten. So in short: No, sequelize cannot mirror the database.

Hope that helps :)

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

Sequelize-Auto

A toot 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.

Category:node.js Views:4 Time:2012-04-08

Related post

Copyright (C) dskims.com, All Rights Reserved.

processed in 0.079 (s). 11 q(s)