2016-11-04 118 views
0

我爲我的orm數據庫使用了sequelize。我正在使用mysql。未定義的續集

運行該項目時出現此錯誤。

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; 

,這是我的模型。當我運行該項目。它顯示錯誤,沒有定義的續集。

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; 

}; 

通知你,我在使用ORM像sequelize數據庫新。而且我不明白我在這裏錯過了什麼。

有什麼想法?

回答

0

您需要將sequelizeDataTypes添加到您的模型函數的參數中。當你做sequelize.import時,Sequelize會通過這些。

另請參見https://github.com/sequelize/express-example/blob/master/models/task.js爲一個工作示例

+0

是的就是這樣。謝謝。但它有其他錯誤。表'OkAkuns'不存在。我的表是'OkAkun',沒有'',就像我在OkAkun.js模型中定義的那樣。 我在這裏想念什麼? thx –

+0

你可以添加任何鏈接教程來使用從零的sequelize請。 –

+1

當確定表名時,Sequelize會自動多元化您的型號名稱。您可以通過將'freezeTableName:true'傳遞給模型選項來禁用此功能。官方文件是開始的好地方;這是我學習Sequelize的地方:) https://sequelize.readthedocs.org –