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"
的报告
简答:
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"}');
希望兹拉坦批准。
我对 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"
简答:
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"}');
希望兹拉坦批准。