2017-08-15 113 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