6

Bookshelf に問題があります。json 型の列にクエリを使用したい テーブルに 'data' 型の json 列があり、この列 'team' = 'PSG' のすべての要素を取得したい

私はテストします:

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

このエラーがあります

「WHERE の引数はテキスト型ではなくブール型でなければなりません」

または私はテストします

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

このエラーがあります

「演算子 \"#>\" は許可されていません」

https://github.com/tgriesser/bookshelf/issues/550でレポートがあると思います

4

1 に答える 1

4

簡潔な答え:

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

説明:

foos要素fooがある table があるとします

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

そのための生のクエリは次のようになります。

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

テーブル foos を表すモデル Foo がある場合、Bookshelf では、クエリは次のようになります。

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

今あなたの場合、それは次のようになるはずです

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

うまくいけば、ズラタンはそれを承認します。

于 2016-04-26T22:14:28.107 に答える