我有以下模型层次结构:
User.hasMany(Child);
Child.hasMany(Profile);
加载User
对象后,我需要根据以下逻辑加载Children
及其关联的Profiles
:
Children
的所有User
,按name
排序。Child
,按Profiles
加载前三个id
反向排序。有没有办法限制和排序急切加载的Profiles
?我可以限制Children
而不是Profiles
。
user.getChildren({
limit: 10,
order: [['name', 'ASC']],
include: [{
model: Profile,
limit: 3, <-- HAS NO EFFECT!!!
order: [['id', 'DESC']] <-- HAS NO EFFECT!!!
}]
});
我能使其发挥作用的唯一方法是执行以下操作:
user.getChildren({
limit: 10,
order: [['name', 'ASC']]
}).then(function(children) {
user.children = children;
_.each(children, function(child) {
child.getProfiles({
limit: 3,
order: [['id', 'DESC']]
});
});
});
这在我看来都很糟糕,需要额外的代码才能确保在加载所有Children
之前我都无法访问Children
。
有没有办法在limit
构造内指定order
和include[]
选项?
答案 0 :(得分:1)
不确定limit
,但我尝试了一个简单的order
,它运行良好:
user.getPets({
order: 'type ASC'
})
通过扩展,我会假设限制也有效吗?