gpt4 book ai didi

javascript - DESC 中的订单记录在 SequelizeJS 中不起作用

转载 作者:行者123 更新时间:2023-12-01 15:04:08 26 4
gpt4 key购买 nike

在我的应用程序中,我有 Products 表,其中包含各种类型的产品。
在每条记录中有列调用 updateDetails 它是一个 JSON 具有以下属性的对象。

const updateDetails = { time: '2020-05-28T05:53:31.540Z', userId: 1, officeId: 2}

但是在 Products 表 的一些记录中updateDetails null 并且会在任何用户编辑记录后更新。

我的示例数据库记录如下。
[
{
name: 'Product 1',
type: 'a',
updateDetails: { time: '2020-05-28T05:53:31.540Z', userId: 1, officeId: 2 }
},
{
name: 'Product 2',
type: 'a',
updateDetails: null
},
{
name: 'Product 3',
type: 'a',
updateDetails: { time: '2020-05-27T05:53:31.540Z', userId: 1, officeId: 2 }
},
{
name: 'Product 4',
type: 'a',
updateDetails: null
},
{
name: 'Product 5',
type: 'a',
updateDetails: { time: '2020-05-20T05:53:31.540Z', userId: 1, officeId: 2 }
}
]

我想要做的是需要通过在 上进行排序来获取产品updateDetails.time desc 订单,需要有记录 updateDetails = null在结果的最后。预期结果如下。
[
{
name: 'Product 1',
type: 'a',
updateDetails: { time: '2020-05-28T05:53:31.540Z', userId: 1, officeId: 2 }
},
{
name: 'Product 3',
type: 'a',
updateDetails: { time: '2020-05-27T05:53:31.540Z', userId: 1, officeId: 2 }
},
{
name: 'Product 5',
type: 'a',
updateDetails: { time: '2020-05-20T05:53:31.540Z', userId: 1, officeId: 2 }
},
{
name: 'Product 2',
type: 'a',
updateDetails: null
},
{
name: 'Product 4',
type: 'a',
updateDetails: null
}
]

我使用了下面的查询但没有成功。
const results = await Product.findAll({
{ where: { type: 'a' } },
limit: 10,
order: [['updateDetails.time', 'DESC']]
})

但它无法给出我想要的结果。
提前致谢。

最佳答案

工作样本是:

// await Product.bulkCreate([ ... ])
const results = await Product.findAll({
where: { type: 'a' },
limit: 10,
order: [['updateDetails.time', 'DESC NULLS LAST']]
});

请注意 updateDetails必须是 JSONB 类型。

订单查询转换为:

ORDER BY ("Product"."updateDetails"#>>'{time}') DESC NULLS LAST LIMIT 10;

关于javascript - DESC 中的订单记录在 SequelizeJS 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62058148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com