繁体   English   中英

Node.js Sequelize ORM模型问题

[英]Node.js Sequelize ORM model issue

我正在为我的Web应用程序使用Sequelize Node.js ORM。 当我启动节点服务器时面临以下问题。

以下是更多详细信息

错误

project_directory_path \\ node_modules \\ sequelize \\ LIB \\ sequelize.js:322

model.init(属性,选项);

TypeError:model.init不是 Sequelize.define(project_directory_path \\ node_modules \\ sequelize \\ lib \\ sequelize.js:322:11)在module.exports(project_directory_path \\ models \\ sequelize \\ app_config_setting.js:2:41)处的函数Sequelize.import(project_directory_path \\ node_modules \\ sequelize \\ lib \\ sequelize.js:379:32)位于Array.forEach(native)的project_directory_path \\ models \\ index.js:34:48。 (project_directory_path \\ models \\ index.js:31:6)在Module._compile(module.js:425:26)在Object.Module._extensions..js(module.js:432:10)在Module.load(模块.js:356:32)(位于Function.Module._load(module.js:311:12)(位于Module.require(module.js:366:17))(需要)(Object.js:385:17)。 (project_directory_path \\ server.js:12:14)在Module._compile(module.js:425:26)在Object.Module._extensions..js(module.js:432:10)在Module.load(module.js :356:32)在Function.Module._load(module.js:311:12)在Function.Module.runMain(module.js:457:10)在启动时(node.js:136:18)在node.js :972:3

版本号

节点版本v5.0.0,续集版本:“ ^ 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;
  };

通过更新节点模块解决了问题

即npm更新

只需更新您的节点模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM