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メソッドを使用したときに警告が表示される原因と対応について説明しました。
💕
記事が参考になったら少額を寄付いただけると励みになります。
コメントを送る
コメントはブログオーナーのみ閲覧できます