使用postgres ltree查询对〜运算符的sequelize支持

时间:2017-07-26 11:19:30

标签: postgresql sequelize.js ltree

我有一个简单的postgres ltree查询

select * from data_objects WHERE path ~ 'root.*{1}';

我想在sequelize中实现这个,但是〜运算符没有映射。

是否可以覆盖映射?或者我是否必须使用原始SQL查询?

2 个答案:

答案 0 :(得分:1)

如果您使用sequelize将查询作为原始查询运行,它应该可以工作:

sequelize.query("select * from data_objects WHERE path ~ 'root.*{1}'",
                { type: sequelize.QueryTypes.SELECT})
    .then(users => {

    })

有关详细信息,请查看documentation。请注意,通过使用本机查询,您将Postgres的硬依赖性引入到您的节点代码中。您是否选择这样做取决于您。

也许您也可以使用LIKE修改您的查询:

select * from data_objects WHERE LOWER(path) LIKE 'root%{1}'

答案 1 :(得分:1)

找到解决方案:

params.path = {
        $regexp:'root.*{1}'
};

翻译为

where "path" ~ 'root.*{1}'

我没见过$ regexp运算符