【发布时间】:2019-07-04 00:34:06
【问题描述】:
我有一个模型,比如 Base,它有一个 Details1 模型或一个 Details2 模型,具体取决于字段“type”(表示 details1 或 details2)的值。
Details1 和 Details2 都有一个字段“orderField”。
有没有办法根据 Base.type = details1 或 details2 按 Details1.orderField 或 Details2.orderField 对 Base 模型的行进行排序?
我已尝试查找与订购有关的 sequelize 文档:http://docs.sequelizejs.com/manual/querying.html#ordering
我试过这个:
Base.findAll(
{
include: [
{ model: Details1 },
{ model: Details2 }
],
order: [
[
{ model: Details1, as: 'Details1' }, 'orderField', 'DESC'
],[
{ model: Details2, as: 'Details2' }, 'orderField', 'DESC'
]
]
});
然而,上面的代码分别通过 Details1.orderField 和 Details2.orderField 对 Base 模型的行进行排序。
例如,如果我有以下数据:
{type: details1, Details1: {orderField: 2}}
{type: details2, Details2: {orderField: 1}}
{type: details2, Details2: {orderField: 5}}
{type: details1, Details1: {orderField: 4}}
{type: details2, Details2: {orderField: 3}}
那么预期的顺序是:
{type: details2, Details2: {orderField: 5}}
{type: details1, Details1: {orderField: 4}}
{type: details2, Details2: {orderField: 3}}
{type: details1, Details1: {orderField: 2}}
{type: details2, Details2: {orderField: 1}}
但是,我得到的输出是:
{type: details1, Details1: {orderField: 4}}
{type: details1, Details1: {orderField: 2}}
{type: details2, Details2: {orderField: 5}}
{type: details2, Details2: {orderField: 3}}
{type: details2, Details2: {orderField: 1}}
【问题讨论】:
标签: node.js sequelize.js