初めまして。最近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 ではなく、 = を使うと登録直後に検索しても検索可能です。
こちらの方法で一度検討をしてみます。
ありがとうございました!