1

我有一个简单的 postgres ltree 查询

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

我想在 sequelize 中实现它,但是 ~ 运算符没有映射。

是否可以覆盖映射?还是我必须使用原始 sql 查询?

4

2 回答 2

2

找到了解决方案:

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

翻译为

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

我没有看到 $regexp 运算符

于 2017-07-26T11:33:55.760 回答
1

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

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

    })

查看文档以获取更多信息。请注意,通过使用本机查询,您会将对 Postgres 的硬依赖引入您的 Node 代码中。你是否选择这样做取决于你。

也许您还可以使用以下命令重新表述您的查询LIKE

select * from data_objects WHERE LOWER(path) LIKE 'root%{1}'
于 2017-07-26T11:26:06.080 回答