我有一个Bookshelf的问题,我想使用查询列json类型 我的表有列'数据'类型json,我希望在这个列中获得所有元素'team'='PSG'
我测试:
collection.query('whereRaw', "data->'team'->>'PSG'");
我有这个错误
“WHERE的参数必须是boolean类型,而不是类型文本”
或者我测试
collection.query('where', "data", "#>", "'{team, PSG}'");
我有这个错误
的报告“不允许运营商”#> \“”
答案 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批准它。