0

先週、ScriptDB Type Equivalences で問題が発生したかどうかを尋ねたいと思いました。数値に関するクエリを実行していた 7 月 10 日に、数値を含むクエリのみが適切な結果を返していました。ドキュメントでは、次のように述べられています。

つまり、数値を持つオブジェクトがある場合、その文字列バージョンに対してクエリを実行できます。たとえば、オブジェクト {a: 23} を保存する場合、{a: "23"} に対してクエリを実行すると、ScriptDb は前のオブジェクトを見つけます。

しかし、文字列パラメーターを使用した後者のバージョンのクエリでは、何も返されませんでした。両方のバージョンが期待どおりに動作するようになりました。

最近、同じ問題に気付いた人はいますか?

4

1 に答える 1

1

ご指摘の日に、整数値による検索のインデックス作成と解決に関連する問題がログに記録されました。

イシュー トラッカーに提案された解決策があります。

https://code.google.com/p/google-apps-script-issues/issues/detail?id=2999

お待ち頂きまして、ありがとうございます; 根本的な問題は現在解決されていると考えています。ただし、過去 2 日間に保存または再保存したデータをさかのぼって修正することはありません。その期間中に保存したデータは安全に保存されますが、データ型が正確に一致しない場合、それらのオブジェクトへのクエリは引き続き失敗します。たとえば、プロパティ {id: 4074} は {id: 4074} (数値) と一致しますが、{id: '4074'} (文字列) または {id: true} (ブール値テスト) とは一致しません。

データ型が正確に一致しないで過去 2 日間のデータを照会する必要がある場合は、以下のサンプル関数のようなものを使用して、ScriptDb からレコードを取得し、その場で書き換えて、レコードを再保存する必要があります。

function resaveRecords() {
  var db = ScriptDb.getMyDb();
  var records = db.query({}); // get all records
  while (records.hasNext()) { // loop through records
    var item = records.next();
    db.save(item);            // resave with the same ScriptDb ID
  }
}
于 2013-07-15T10:35:41.857 に答える