Sequelize包括(如何构造查询)?

时间:2015-08-17 13:44:56

标签: mysql node.js sequelize.js

我有一个问题,我试图根据一对多的关系来执行。 例如,有一个名为Users的模型和一个名为Projects的模型。

用户拥有多个项目

项目有许多类型存储在类型(枚举)列中。我想要加载的用户可能有4种不同的类型。问题是我希望包含可能存在的所有网络的最新项目记录(createdAt列)。我还没有找到一种方法来构建查询,使其作为包含工作。然而,我找到了一种方法来执行原始查询,它可以满足我的需求。

我正在寻找一种无需进行原始查询的方法。通过执行原始查询,我必须将返回的结果映射到我从其他方法返回的用户,或者我必须做一个简单的包含然后修剪掉所有不是最新的结果。后者很好,但我发现这会变慢,因为用户会有很多项目,而且会继续稳步增长。

1 个答案:

答案 0 :(得分:0)

这允许序列化json以获取有关模型的任何操作。阅读它,非常好

sequelize-virtual-fields

// define models 
var Person = sequelize.define('Person', { name: Sequelize.STRING });
var Task = sequelize.define('Task', {
name: Sequelize.STRING,
nameWithPerson: {
    type: Sequelize.VIRTUAL,
    get: function() { return this.name + ' (' + this.Person.name + ')' }
    attributes: [ 'name' ],
    include: [ { model: Person, attributes: [ 'name' ] } ],
    order: [ ['name'], [ Person, 'name' ] ]
}
});

// define associations 
Task.belongsTo(Person);
Person.hasMany(Task);

// activate virtual fields functionality 
sequelize.initVirtualFields();