いつもお世話になっております。
現在、REST APIを使ってデータをローカルへ保存、その後更新のあったデータのみを取得する処理の作成を行っております。
更新されているかの判断に$revisionがローカル取得したrevisionより大きければ取得といったqueryを作成してみたのですが「クエリ記法が間違っています。」とエラーが返ってきてしまいます。
例) query=レコード番号=100 and $revision>1 // revisionが2以降ならば取得
revisionは文字列として判断されるのでしょうか、そもそも判定は行えないのでしょうか?
もしご存知の方おりましたらご教授ください。
こんにちは。
上手く行かないですね。
フィールド、システム識別子ごとの利用可能な演算子と関数一覧
https://developer.cybozu.io/hc/ja/articles/202331474#step2
を見たのですが、クエリ指定の一覧に乗ってないので$revisionはクエリ指定出来ないのかもしれません。
どなたか分かりますでしょうか?
おはようございます。
やはり最終更新日付とかで絞り込むしかないんですかね。
もしくは独自のRivisionフィールドを持たせて更新されるごとに$revisionからコピーするとか…?
ご回答いただき、ありがとうございました!
こんにちは。プロジェクト・アスノートの松田です。
検証されているように、クエリーの条件には指定することはできないと思います。
取得時の条件でrevisionを指定するのではなく、一旦取得してきたレコードデータを、ローカルにあるものと比較して、対象のデータのみ更新(ローカル)する、という処理が必要なのかなと思います。
ご回答ありがとうございます。
やはり無理なようですね。。
リクエストするデータが一度に数百件かえってくる事を想定した際に取得に時間がかかってしまうため
少しでも絞り込めたらと考えいたのですが、アドバイスありがとうございました。
なるほど。複数レコードの一括取得なんですね。
であればなおさら、レコード毎にrevisionはマチマチなので、クエリーで条件を絞ってまとめて取得という構想に無理があるかもですね。
ローカル側の状況が分かりませんが、前回保存されたデータから、最新の更新日時を取得し、それ以降に更新されたレコードをクエリーで指定して取得、という形になるのではないかと思います。