Bookshelf.js与json列Postgresql在哪里

时间:2015-01-05 13:01:53

标签: json postgresql bookshelf.js

我有一个Bookshelf的问题,我想使用查询列json类型 我的表有列'数据'类型json,我希望在这个列中获得所有元素'team'='PSG'

我测试:

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

我有这个错误

  

“WHERE的参数必须是boolean类型,而不是类型文本”

或者我测试

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

我有这个错误

  

“不允许运营商”#> \“”

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

的报告

1 个答案:

答案 0 :(得分:4)

简答:

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

<强>解释

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

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

原始查询就像。

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

现在在Bookshelf中,如果你有一个代表表格的模型Foo,那么查询应该是这样的。

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

现在你的情况应该是

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

希望 Zlatan批准它。