Bookshelf.js 其中 json 列 Postgresql

Bookshelf.js where with json column Postgresql

我对 Bookshelf 有疑问,我想对 json 类型的列使用查询 我的 table 有列 'data' 类型 json,我想获取此列中的所有元素 'team' = 'PSG'

我测试:

  collection.query('whereRaw', "data->'team'->>'PSG'");

我有这个错误

"argument of WHERE must be type boolean, not type text"

或者我测试

collection.query('where', "data", "#>", "'{team, PSG}'");

我有这个错误

"The operator \"#>\" is not permitted"

我认为有 https://github.com/tgriesser/bookshelf/issues/550

的报告

简答:

collection.query('where', 'data', '@>', '{"team": "PSG"}');

解释:

假设您有一个 table foos,其中元素 foo

 ------------------------
| id | attr              |
 ------------------------
| 0  |{ "bar": "fooBar"} | 
 ------------------------
| 1  |{ "bar": "fooFoo"} | 
 ------------------------

原始查询就像这样。

select * from "foos" where "attr" @> '{"bar":"fooBar"}';

现在在 Bookshelf 中,如果您有一个代表 table foo 的模型 Foo,查询应该是这样的。

Foo.where('attr', '@>', '{"bar":"fooBar"}').fetch().then(function(rows){});

现在你的情况应该是

collection.query('where', 'data', '@>', '{"team": "PSG"}');

希望兹拉坦批准