2017-08-15 111 views
0

我正在爲我的Web應用程序使用Sequelize Node.js ORM。當我啓動節點服務器時遇到以下問題。Node.js Sequelize ORM模型問題

以下是進一步細節

錯誤

project_directory_path \ node_modules \ sequelize \ lib中\ sequelize.js:322

model.init(屬性,選項);

類型錯誤:model.init不是函數 在Sequelize.define(project_directory_path \ node_modules \ sequelize \ lib中\ sequelize.js:322:11) 在module.exports(project_directory_path \模型\ sequelize \在project.js目錄下的project_directory_path \ models \ index.js:34:48 (native_app_config_setting.js:2:41) at Sequelize.import(project_directory_path \ node_modules \ sequelize \ lib \ sequelize.js:379:32) ) at Object。 (module.js:432:10) at Module._compile(module.js:425:26) (project_directory_path \ models \ index.js:31:6) at Module._compile load(module.js:356:32) at Module.require(module.js:366:17) at require(module.js:385: 17) at Object。 (module.js:432:10) at Module.load(module.js:425:26) (project_directory_path \ server.js:12:14) at Module._compile module.js:356:32) at Function.Module._load(module.js:311:12) at Function.Module.runMain(module.js:457:10) at startup(node.js:136: 18) 在node.js中:972:3

節點版本V5.0.0, sequelize版本: 「^ 4.4.2」, 方言: 「MySQL的」

index.js文件(裝入所有型號)

var fs = require('fs'); 
var path = require('path'); 
var sequelize = require('sequelize'); 
var sequelizeConnection = 
require('../configs/dbConnection.js').exposeSequelizeConnectionObj(); 
var sequelizeModelDir = path.join(__dirname, 'sequelize'); 
var dbModels = {}; 

fs.readdirSync(sequelizeModelDir) 

//avoiding the index.js and all other files 
//expect the model files 
.filter(function (file) { 
    return (file.indexOf(".") !== 0) && (file !== "index.js"); 
}) 

//iterating on each models and importing it 
//in sequelize connection object 
.forEach(function (file) { 
    var dir = 'sequelize/'; 
    var models = sequelizeConnection.import(path.join(sequelizeModelDir, file)); 
    dbModels[models.name] = models; 
}); 

//exposing all the models 
module.exports = dbModels; 
dbModels.sequelize = sequelizeConnection; 

我的一個模型(只是爲了讓這個想法)

module.exports = function (sequelize,DataTypes) { 
var roles = sequelize.define(
    'roles', 
    { 
     id: {autoIncrement: true, type: DataTypes.INTEGER(11), allowNull: false, primaryKey: true}, 
     role_name: {type: DataTypes.ENUM('super_admin'), allowNull: false}, 
     code_name: {type: DataTypes.ENUM('super_admin'), allowNull: false}, 
     row_status: {type: DataTypes.ENUM('active','inactive'), allowNull: true} 
    }, 
    { 
     timestamps: false, 
     paranoid: true, 
     freezeTableName: true, 
     tableName: 'roles' 
    } 
); 
return roles; }; 

數據庫連接文件:

var sequelize = require('sequelize'); 
var sequelizeConnectionObj = new sequelize(process.env.DB_DATABASE_NAME, 
process.env.DB_USERNAME, process.env.DB_PASSWORD, { 
host: process.env.DB_HOSTNAME, 
dialect: 'mysql', 
define: { 
    timestamps: false 
}, 
dialectOptions: { 
    multipleStatements: true 
}, 
logging: false, 
pool: { 
    max: 15, 
    min: 0, 
    idle: 10000 
    } 
}); 

    exports.exposeSequelizeConnectionObj = function connectSequelize() { 
    return sequelizeConnectionObj; 
    }; 

回答

0

問題是由更新節點模塊

I-E NPM更新

只需更新您的節點模塊解決。

+0

很高興您設法解決您的問題。你的代碼好像是由sequelize-cli生成的,我是對的?我認爲Sequelize的最後一個版本還存在問題,目前尚未支持(我認爲)。我已經使用相同的代碼創建了一個小型存儲庫,但我認爲它更簡單> https://github.com/sapher/sequelize-boilerplate – Sapher