Sequelize ::限制和订购INSIDE和Include []结构

时间:2015-07-09 06:05:01

标签: node.js sequelize.js

我有以下模型层次结构:

User.hasMany(Child);
Child.hasMany(Profile);

加载User对象后,我需要根据以下逻辑加载Children及其关联的Profiles

  1. 加载Children的所有User,按name排序。
  2. 对于每个Child,按Profiles加载前三个id反向排序。
  3. 有没有办法限制和排序急切加载的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构造内指定orderinclude[]选项?

1 个答案:

答案 0 :(得分:1)

不确定limit,但我尝试了一个简单的order,它运行良好:

user.getPets({
    order: 'type ASC'
})

通过扩展,我会假设限制也有效吗?