我想通过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())中以编程方式对结果进行排序。但是我想知道是否可以使用续集查询。
答案 0 :(得分:1)
尝试一下:
roduct.findAll({ where: { available: true }, order: [[sequelize.literal('price->>\'EUR\''), 'ASC']] }