我正在构建我的第一个node.js应用程序 . 我使用express js和sequelize来处理Data对象 . 我想构建一个包含我的应用程序的所有模型的模型对象,但是这样做会出错 . 是什么导致他们?
In models/User.js :
module.exports = function(sequelize, DataTypes) {
return sequelize.define('User', {
id : DataTypes.INTEGER,
firstName : DataTypes.STRING,
lastName : DataTypes.STRING,
email : DataTypes.STRING,
login : DataTypes.STRING,
password : DataTypes.STRING,
isAdmin : DataTypes.BOOLEAN
});
};
In models/Project.js :
module.exports = function(sequelize, DataTypes) {
return sequelize.define('Project', {
id : DataTypes.INTEGER,
projectName : DataTypes.STRING
});
};
In models/Models.js :
var Sequelize = require('sequelize');
var env = process.env.NODE_ENV || "development";
var config = require(__dirname + '/../config/config.json')[env];
// initialize database connection
var sequelize = new Sequelize(config.name, config.username, config.password);
// load models
var models = [ 'Project', 'User' ];
models.forEach(function(model) {
console.log(__dirname + '/' + model);
console.log(sequelize.import(__dirname + '/' + model));
module.exports[model] = sequelize.import(__dirname + '/' + model);
});
// describe relationships
(function(m) {
m.Project.belongsToMany(m.User, {
through : 'UserProject'
});
m.User.belongsToMany(m.Project, {
through : 'UserProject'
});
})(module.exports);
// export connection
module.exports.sequelize = sequelize;
当我尝试运行我的app.js时,出现以下错误:
/home/julien/Developpements/nodejs/rmtool/node_modules/sequelize/lib/utils.js:51转str.trim() . replace(/ [-_ \ s]( . )?/ g,function(match, c){return c.toUpperCa ^ TypeError:无法在String.replace(native)读取/home/julien/Developpements/nodejs/rmtool/node_modules/sequelize/lib/utils.js:51:75中未定义的属性'toUpperCase'在Object.module.exports.camelize(/home/julien/Developpements/nodejs/rmtool/node_modules/sequelize/lib/utils.js:51:23)at Object.module.exports.camelizeIf(/ home / julien / Developpements / nodejs / rmtool / node_modules / sequelize / lib / utils.js:18:22)at new BelongsToMany(/home/julien/Developpements/nodejs/rmtool/node_modules/sequelize/lib/associations/belongs-to-many.js:112 :56)在/ home / julien / Developpements / nodejs / rmtool / models / Model的Mixin.belongsToMany(/home/julien/Developpements/nodejs/rmtool/node_modules/sequelize/lib/associations/mixin.js:297:21) .js:20:13 at Object . (/home/julien/Developpements/nodejs/rmtool/models/Model.js:26:4)在Module._compile(modu le.js:460:26)在Function.Module._load的Module.load(module.js:355:32)的Object.Module._extensions..js(module.js:478:10)处(module.js: 310:12)在Module.require(module.js:365:17)at对象的require(module.js:384:17) . (/home/julien/Developpements/nodejs/rmtool/routes/login.js:9:13)在Module._compile(module.js:460:26)
1 回答
当规范形式更像是声明关系时,似乎很奇怪:
加载所有模型后调用
associate
方法以避免依赖性问题 .也试着把它叫做
models/index.js
所以你可以require('./models')