Node.js 延续联想
我正在尝试使用sequelizejs 1.4,在阅读了文档之后,仍然对关联感到困惑 var User=sequelize.define('User',{/*…/}) var Project=sequelize.define('Project',{/..*/}) Project.hasOne(用户) 是否每次都必须包含此代码?我试图将模型分离为单个文件,但看到这一点,我认为需要在项目模型中定义用户 或者,我是否需要将模型关联到更高级别 p1=新项目() u1=新用户() p1.哈松(u1) 只是我觉得不太对。我知道我肯定错过了一些明显的东西,只需要有人拉一下打开灯的开关:) 谢谢简短的回答,是的 只需创建一个关联文件,该文件将包含以下关联:Node.js 延续联想,node.js,sequelize.js,Node.js,Sequelize.js,我正在尝试使用sequelizejs 1.4,在阅读了文档之后,仍然对关联感到困惑 var User=sequelize.define('User',{/*…/}) var Project=sequelize.define('Project',{/..*/}) Project.hasOne(用户) 是否每次都必须包含此代码?我试图将模型分离为单个文件,但看到这一点,我认为需要在项目模型中定义用户 或者,我是否需要将模型关联到更高级别 p1=新项目() u1=新用户() p1.哈松(u1) 只是我
module.exports = function(db){
var sup = db.import(__dirname+'/sup.js');
var node = db.import(__dirname+'/node.js');
sup.hasMany(node);
node.hasOne(sup);
return db;
}
现在,在应用程序或主文件中,创建数据库后只需执行以下操作:
var database = new Sequelize(...);
database = require(__dirname+'/association.js');
database.sync();
为每个模型创建如下文件:Car.js,City.js 然后在每个模型中,您都会这样做:
module.exports.getModel = function(sequelize){sequelize.define("Car"...)}
module.exports.setAssociations(models){models.Car.hasOne(models.City)}
var sequelize = this.__connection;
var Sequelize = require('sequelize');
var rootFolder = this.__rootFolder;
var modelsNames = this.getModelsNames(rootFolder);
var i = k = modelsNames.length;
var modelName;
var models = {};
var modelFactoryFn;
// load models
while(i--){
modelName = modelsNames[i];
var Model = require(path.resolve(rootFolder, modelName)).getModel(sequelize);
if(!Model){
throw new Error("No model returned from " + path.resolve(rootFolder, modelName));
}
models[modelName] = Model;
}
// build associations
var modelFile;
while(k--){
modelName = modelsNames[k];
modelFile = require(path.resolve(rootFolder, modelName));
if(modelFile.buildAssociations){
modelFile.buildAssociations(models);
}
}
this.__models = models;
要做到这一点,您需要抽象出如下方式:
module.exports.getModel = function(sequelize){sequelize.define("Car"...)}
module.exports.setAssociations(models){models.Car.hasOne(models.City)}
var sequelize = this.__connection;
var Sequelize = require('sequelize');
var rootFolder = this.__rootFolder;
var modelsNames = this.getModelsNames(rootFolder);
var i = k = modelsNames.length;
var modelName;
var models = {};
var modelFactoryFn;
// load models
while(i--){
modelName = modelsNames[i];
var Model = require(path.resolve(rootFolder, modelName)).getModel(sequelize);
if(!Model){
throw new Error("No model returned from " + path.resolve(rootFolder, modelName));
}
models[modelName] = Model;
}
// build associations
var modelFile;
while(k--){
modelName = modelsNames[k];
modelFile = require(path.resolve(rootFolder, modelName));
if(modelFile.buildAssociations){
modelFile.buildAssociations(models);
}
}
this.__models = models;
我知道这可能会更好,但这让你现在就可以工作,而且比用语言更好地解释