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

标签 javascript postgresql sequelize.js

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

我有一个这样的模型:

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()) 中以编程方式对结果进行排序。但我想知道是否可以使用 sequelize 查询。

最佳答案

试试这个:

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

关于javascript - 如何在 sequelize 中按嵌套的 JSONB 属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53285885/

相关文章:

mysql - Sequelize bulkCreate() 返回主键的 NULL 值

javascript - 使用 PhpStorm 和 node-watch 在服务器上监视、构建文件并上传

javascript - Angular2 不能使用基本的 javascript 库

javascript - 选择materializecssCSS

spring - 基于登录用户凭据的 Hibernate 数据源配置

macos - 在 Mac 上编译 PostGIS for PostgreSQL 9.1

php - Laravel (v5.2.45) 播种器和双引号

javascript - 我不明白为什么我的代码没有获取输入框的值并创建一个新对象

node.js - Sequelize 查询以根据列值获取不同行的不同列

node.js - PassportJs 身份验证无限循环和执行(默认)查询