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