我有一个问题,我试图根据一对多的关系来执行。 例如,有一个名为Users的模型和一个名为Projects的模型。
用户拥有多个项目
项目有许多类型存储在类型(枚举)列中。我想要加载的用户可能有4种不同的类型。问题是我希望包含可能存在的所有网络的最新项目记录(createdAt列)。我还没有找到一种方法来构建查询,使其作为包含工作。然而,我找到了一种方法来执行原始查询,它可以满足我的需求。
我正在寻找一种无需进行原始查询的方法。通过执行原始查询,我必须将返回的结果映射到我从其他方法返回的用户,或者我必须做一个简单的包含然后修剪掉所有不是最新的结果。后者很好,但我发现这会变慢,因为用户会有很多项目,而且会继续稳步增长。
答案 0 :(得分:0)
这允许序列化json以获取有关模型的任何操作。阅读它,非常好
// 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();