Google Cloud DatastoreのNode.jsクライアントでfilter
メソッドを使用すると下記のような警告が表示されることがあります。
Warning: Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter
この記事では、警告が表示される原因と対応について説明します。
警告が表示されるのは、filter
メソッドを下記のように使用しているときです。
const { Datastore } = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore
.createQuery('UserPost')
.filter('user_id', '=', 'abcd');
原因は、filter
メソッドに特定のオブジェクトではなく文字列を引数として与えていることです。
警告に対応するにはfilter
メソッドの引数を、下記のようにPropertyFilter
オブジェクトを使って書き換えます。
const { Datastore, PropertyFilter } = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore
.createQuery('UserPost')
.filter(new PropertyFilter('user_id', '=', 'abcd'));
PropertyFilter
のコンストラクタには以前filterに与えていた引数をそのまま渡します。
注意点として、AND条件のときはfilter
メソッドをチェインするのではなく、and
メソッドを使って複数のPropertyFilter
オブジェクトをまとめます。
例として下記のPropertyFilter
を使って書き換えてみることを考えます。
const { Datastore } = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore
.createQuery('UserPost')
.filter('user_id', '=', 'abcd')
.filter('status', '=', 'Ready');
下記のようにand
メソッドにAND条件となるPropertyFilter
オブジェクトの配列を与えます。
const { Datastore, PropertyFilter, and } = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore
.createQuery('UserPost')
.filter(
and([
new PropertyFilter('user_id', '=', 'abcd'),
new PropertyFilter('status', '=', 'Ready'),
])
);
さらに詳しくは下記の公式ドキュメントを参照してください。
以上です。この記事では、Google Cloud DatastoreのNode.jsクライアントでfilter
メソッドを使用したときに警告が表示される原因と対応について説明しました。
💕
記事が参考になったら少額を寄付いただけると励みになります。
コメントを送る
コメントはブログオーナーのみ閲覧できます