Sequelize :: Limit和Order INSIDE包含构造
我有以下模型层次结构:
User.hasMany(Child); Child.hasMany(Profile);
一旦我加载了一个User
对象,我需要根据以下逻辑加载它的Children
对象及其关联的Profiles
:
- 为
User
加载所有Children
,按name
sorting。 - 对于每个
Child
,加载按id
sorting的前三个Profiles
。
有没有办法限制和sorting急切加载的Profiles
? 我可以限制和sorting的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
。
有没有办法在include[]
结构中指定limit
和order
选项?
不知道有关limit
,但我尝试了一个简单的order
,它工作正常:
user.getPets({ order: 'type ASC' })
通过扩展,我会承担限制的作品呢?