POST後に登録したレコードを含めて取得したい

初めまして。最近Kintoneを触り始めました。

 

現在、POSTを用いて登録したレコードを、そのあとに関連する

レコードもまとめてGETで取得しなおすという処理を行っています。

queryを用いて、複数レコードを取得しようとすると、登録したばかりのレコードが取得できません。

しかし、登録したレコードのidで単一レコード検索を行うと、取得が出来ます。 

ご教示いただけると大変助かります。

 

実際のコードとは多少違いますが、下記のようなコードになります。

 

// 登録処理

kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘POST’, body).then(function(resp){

  // 検索処理(登録したレコードも含めて検索する)

  kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, body, function(resp) {

    console.log(resp); // 登録したレコードが出力されない

  });

});

ruorua さん

検索処理で実際に指定している抽出条件は、なんでしょうか?

たぶんそれが登録したレコードを抽出できない条件となっていると思います。

rex0220さん

ご回答ありがとうございます。

 

>検索処理で実際に指定している抽出条件は、なんでしょうか?

登録時の項目として、

“articleCd”:“A123”

といった感じの内容で登録をしています。

 

登録後の検索条件のqueryでは、下記の検索を行っています。

kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’,{

app : AppId

query : “articleCd like "A123"”

});

 

 

登録後、少し時間をおいて検索をすれば、同じ検索条件でも、引っかかるのですが、

登録直後にはレコードが取得されていない状態です。

 

宜しくお願い致します。

こちらで試したところ、問題が再現しました。

確かに、登録直後に検索すると抽出できません。

setTimeout で、2秒以降に検索すると抽出出来ました。

query を like ではなく、 = を使うと登録直後に検索しても検索可能です。

この現象からすると、like を使うとインデックス等を参照する仕組みでレコードを抽出するが、

登録直後はまだインデックス等に反映されておらず、レコードが抜けてしまっているのではないかと思われます。

 

暫定対応として、抽出条件にレコード番号を含めると抽出できました。

query : “articleCd like "A123" or $id = "” + resp.id + “"”

 

本対策は、kintone が対応してくれるのを待つしかないかもしれません。

 

rex0220さん

素早いご対応ありがとうございます!

色々なパターンで検証をしていただき、本当に助かります!

 

>この現象からすると、like を使うとインデックス等を参照する仕組みでレコードを抽出するが、

>登録直後はまだインデックス等に反映されておらず、レコードが抜けてしまっているのではないかと思われます。

なるほど。likeに使うためのindexが別途にあるということでしょうか・・・

 

>query を like ではなく、 = を使うと登録直後に検索しても検索可能です。

こちらの方法で一度検討をしてみます。

ありがとうございました!