Node.js 延续联想

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) 只是我

我正在尝试使用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;
我知道这可能会更好,但这让你现在就可以工作,而且比用语言更好地解释