2016-11-23 2 views
0

Я новичок в узле.sequelize не определен - Sequelize и consign

Я пытаюсь добавить Sequelize в моем простом приложении с cosign.

конфигурации/db.js

var Sequelize = require('sequelize'); 

var sequelize = new Sequelize('test', 'root', '', { 

host: 'localhost', 
dialect: 'mysql', 

pool: { 
max: 5, 
min: 0, 
idle: 10000 
} 

}); 

module.exports = function() { 
return sequelize 
} 

модель/user.js

var Sequelize = require('sequelize'); 

module.exports = function(application, req, res){ 

var User = sequelize.define('user', { 
username: { 
type: Sequelize.STRING, 
} 
}, { 
freezeTableName: true // Model tableName will be the same as the model name 
}); 

User.create({ username: 'fnord'}) 
.then(function() { 
console.log('criado!'); 
}) 
} 

конфигурации/server.js

... 
consign() 
.include('app/routes') 
.then('config/db.js') 
.then('app/models') 
.then('app/controllers') 
.into(app); 

module.exports = app; 

Я получаю ошибку sequelize is not defined´ on уаг User = sequelize.define ('пользователь', {`

Что я делаю неправильно?

+0

как вы решить эту проблему? –

ответ

0

Вы должны требовать sequelize экземпляра в модели пользователя

конфигурации/db.js

module.exports = sequelize;

модели/user.js

var Sequelize = require('sequelize'); 
var sequelize = require('../config/db.js'); //sequelize instance 

module.exports = function(application, req, res){ 

var User = sequelize.define('user', { 
... 
+0

return 'не может найти ..config/db.js' Эта строка:' .then ('config/db.js') 'doenst alredy импортировать файл? –

0

Создать index.js файл внутри вашего пресс-формы:

"use strict"; 

var fs  = require("fs"); 
var path  = require("path"); 
var Sequelize = require("sequelize"); 

var sequelize = new Sequelize(global.config.dbConfig.name, global.config.dbConfig.user, global.config.dbConfig.password, { 
    host: global.config.dbConfig.host, 
    port: global.config.dbConfig.port, 
    pool: false 
}); 

var db = {}; 

fs.readdirSync(__dirname) 
    .filter(function(file) { 
    return (file.indexOf(".") !== 0) && (file !== "index.js"); 
    }) 
    .forEach(function(file) { 
    var model = sequelize.import(path.join(__dirname, file)); 
    db[model.name] = model; 
    }); 

Object.keys(db).forEach(function(modelName) { 
    if ("associate" in db[modelName]) { 
    db[modelName].associate(db); 
    } 
}); 

db.sequelize = sequelize; 

module.exports = db; 

и в вашем user.js сделать что-то вроде этого:

module.exports = function(sequelize, DataTypes) { 
    var User = sequelize.define("User", { 
    username: { 
     type: DataTypes.STRING 
    }, 
    { 
     freezeTableName: true // Model tableName will be the same as the model name 
    } 
    }); 

    return User; 
} 

http://docs.sequelizejs.com/en/1.7.0/articles/express/

Смежные вопросы