如何在sequelize中按嵌套的JSONB属性排序

时间:2018-11-13 16:51:37

标签: javascript postgresql sequelize.js

我想通过JSONB对象的嵌套属性对续集查询进行排序。

我有一个这样的模型:

sequelize.define('product', {
    available: { type: Sequelize.BOOLEAN },
    price: { type: Sequelize.JSONB },
    ...
}

其中的价格是这样的:

price = {
    EUR: 1.2,
    CHF: 1.3,
}

我想按price.EUR对findAll查询进行排序。我希望这行得通:

product.findAll({ where: { available: true }, order: [['price.EUR', 'ASC']] }

但是我得到一个未排序的数组。

底层数据库是postgres。

一种解决方案是在javascript(array._prototype.sort())中以编程方式对结果进行排序。但是我想知道是否可以使用续集查询。

1 个答案:

答案 0 :(得分:1)

尝试一下:

roduct.findAll({ where: { available: true }, order: [[sequelize.literal('price->>\'EUR\''), 'ASC']] }