私はCloudKit JS Webアプリをやっています。
コンパレーター IN を使用してクエリを実行する際に問題に直面しています。fieldValue プロパティの値を変えてみましたが、どれも成功しませんでした。
クエリは次のとおりです。
var publicIDs = ['TEST_ID'];
var query = {
recordType: 'PublicInfo',
filterBy: [{
fieldName: 'publicID',
comparator: 'IN',
fieldValue: { value: publicIDs}
}]
};
publicDB.performQuery(query) ...
これを行うと、次のエラー結果が得られます。
_ckErrorCode: "BAD_REQUEST"
_extensionErrorCode: undefined
_reason: "BadRequestException: Invalid value, expected type STRING but actual value was a list with objects of class java.lang.String"
_recordName: undefined
_redirectURL: undefined
_retryAfter: undefined
_serverErrorCode: "BAD_REQUEST"
_subscriptionID: undefined
_uuid: "5470373b-8665-49a0-8c3c-ebbd4df37bbd"
_zoneID: undefined
message: "BadRequestException: Invalid value, expected type STRING but actual value was a list with objects of class java.lang.String"
交換したら
fieldValue: { value: publicIDs}
と
fieldValue: { value: publicIDs, type: 'list' }
あるいは
fieldValue: { value: publicIDs, type: 'array' }
次のエラー結果が得られます。
_ckErrorCode: "BAD_REQUEST"
_extensionErrorCode: undefined
_reason: "BadRequestException: Unexpected input"
_recordName: undefined
_redirectURL: undefined
_retryAfter: undefined
_serverErrorCode: "BAD_REQUEST"
_subscriptionID: undefined
_uuid: "ccb1d8bb-03e6-476b-b111-89fe3cddbf6d"
_zoneID: undefined
message: "BadRequestException: Unexpected input"
クエリでコンパレータ「EQUALS」と配列の代わりに単一の値を使用すると、エラーなしで正しい結果が得られます。
Cloudkit JS のドキュメントには、「IN」コンパレーターを使用できると記載されています。しかし、それ以上の情報はありません。つまり、クエリで配列値を指定する方法です。
使用する正しい構文を知っている人はいますか?