sequelize - 按包含模型中的列排序

dmi*_*er1 6 sql-order-by sequelize.js

我不知道如何按我包含的模型中的列进行排序。但我什至没有在属性中返回该字段。如果可能的话,我只想按它订购。或者我可以将其退回而不使用,只要我可以按它排序即可。

const users = await db.User.findAll({
    raw: true,
    attributes: [
        'id',
        'first_name',
        'last_name',
        'email',
        'Permission.type'
    ],
    include: [
    {
        model: db.Permission,
        where: { id: { [Op.lte]: 2 } },
        attributes: [],
        order: [[{ model: db.Permission }, 'id', 'DESC']]
    }
    ]
});
Run Code Online (Sandbox Code Playgroud)

在该include块中,该order块现在不执行任何操作。但我的权限模型中有一个属性,称为id我想对所有结果进行排序。如果有必要的话我可以添加Permission.id我的。attributes但我尝试了一下,还是不行。

Ana*_*oly 10

只需将order选项从include主选项移至主选项即可:

const users = await db.User.findAll({
    raw: true,
    attributes: [
        'id',
        'first_name',
        'last_name',
        'email',
        'Permission.type'
    ],
    include: [
    {
        model: db.Permission,
        where: { id: { [Op.lte]: 2 } },
        attributes: []
    }
    ],
    order: [[{ model: db.Permission }, 'id', 'DESC']]
});
Run Code Online (Sandbox Code Playgroud)

也许你应该idinclude属性中指出。