2016-11-04 4 views
0

내 orm 데이터베이스에 sequelize를 사용하고 있습니다. 나는 mysql을 사용하고있다.Sequelize가 정의되지 않았습니다.

프로젝트를 실행할 때이 오류가 발생했습니다.

var accounts = sequelize.define('OkAkun' , {//attrbut 
         ^

ReferenceError: sequelize is not defined 
    at module.exports (/path_to_project/Backend/app/models/OkAkun.js:7:26) 
    at Sequelize.import (/path_to_project/Backend/node_modules/sequelize/lib/sequelize.js:691:30) 
    at /path_to_project/Backend/app/models/index.js:30:32 
    at Array.forEach (native) 
    at Object.<anonymous> (/path_to_project/Backend/app/models/index.js:29:3) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (/path_to_project/Backend/app/routes/routers.js:4:13) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 

내 파일

하는 index.js

"use strict"; 
var fs = require('fs'); 
var path = require ('path'); 
var Sequelize = require ('sequelize'); 
var basename = path.basename(module.filename); 
var env = process.env.NODE_ENV || "development"; 
var dbConfig =require(__base + "config/initializers/config.js").database; 
var sequelize; 

sequelize = new Sequelize(dbConfig[env].database , dbConfig[env].username , dbConfig[env].password, 
      { 
       "dialect": "mysql", 
       "host" :dbConfig[env].host, 
       "port" :dbConfig[env].port, 
       "logging": false, 
       "define": {underscored: true} 
      }); 

var db = {}; 

fs 
.readdirSync(__dirname) 
.filter(function(file){ 
    return (file.indexOf(".") !== 0) && (file !== basename); 
}) 
.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; 
db.Sequelize = Sequelize; 



module.exports = db; 

을 살펴보고이 내 모델입니다. 내가 프로젝트를 실행할 때. 그것은 정의되지 않은 sequelize 오류를 보여줍니다.

OkAkun.js

module.exports = function() { 

var accounts = sequelize.define('OkAkun' , {//attrbut 

    id_akun : { 
     autoIncrement: true, 
     type : DataTypes.INTEGER, 
     allowNull: false, 
     primaryKey : true 
    }, 
    username:{ 
     type : DataTypes.STRING, 
     allowNull: false 
    }, 
    phone_number:{ 
     type: DataTypes.STRING, 
     allowNull:false 
    }, 
    email : { 
     type: DataTypes.STRING, 
     allowNull: true 
    }, 
    create_at : { 
     type: DataTypes.DATE, 
     allowNull: false  
    }, 
    update_at : { 
     type : DataTypes.DATE, 
     allowNull: false 
    }, 
    password : { 
     type: DataTypes.STRING, 
     allowNull: false 
    } 
}); 

return accounts; 

}; 

는 참고로, 내가 sequelize 같은 데이터베이스에 대한 ORM을 사용하여 새로운 해요. 그리고 내가 여기서 누락 된 단계를 이해하지 못합니다.

의견이 있으십니까?

답변

0

모델 함수의 인수에 sequelizeDataTypes을 추가해야합니다. 당신이 sequelize.import을 할 때 Sequelize는 이것을 통과시킬 것입니다.

도 참조 https://github.com/sequelize/express-example/blob/master/models/task.js

+0

예. 그렇습니다. 고맙습니다. 하지만 다른 오류가 있습니다. 테이블 'OkAkuns'가 존재하지 않습니다. 내 테이블은 OkAkun.js 모델에 정의 된 's'가없는 'OkAkun'입니다. 여기에 무엇이 있습니까? thx –

+0

제발 링크를 추가 할 수 있습니다 자습서 제로에서 sequelize하시기 바랍니다. –

+1

Sequelize는 테이블 이름을 결정할 때 모델 이름을 자동으로 복수화합니다. 'freezeTableName : true'를 모델 옵션에 전달함으로써 이것을 막을 수 있습니다. 공식 문서는 시작할 수있는 좋은 곳입니다. 그것은 내가 Sequelize를 배웠던 곳이다 :) https://sequelize.readthedocs.org –

관련 문제