iOS アプリを補完する Web サイトに取り組んでおり、JavaScript の知識が不足していることがわかったので、いくつかのガイダンスを使用できます。
私の CloudKit データベースには、イベントと組織の少なくとも 2 つの recordTypes があり、それぞれに複数のフィールドがあります。Organization の recordType には、特定の Events recordNames への参照が含まれています。各イベントが呼び出された後、そのレコード名を使用して組織のクエリをフィルタリングし、イベントを参照する組織の関連する名前、ロゴなどのフィールドを取得できるように、順次クエリをコーディングしようとしています。
このアプローチは、iOS コード (XCode 7、Swift 2) で機能します。knockoutjs コードで各 recordType を正常に呼び出すことができるので、db へのアクセスに問題がないことがわかります。
以下のコードは現在、最初の関数 (fetchRecords) が 2 番目の関数 (fetchRecords2) を呼び出してから、2 つのレコード セットをマージするように設定されています。これはひどい構造だと確信していますが、さまざまなアプローチを試しましたが、今は少し迷っています。
self.fetchRecords = function() {
var query = { recordType: 'Events' };
return publicDB.performQuery(query).then(function (response) {
if(response.hasErrors) {
console.error(response.errors[0]);
return;
}
var records = response.records;
var numberOfRecords = records.length;
if (numberOfRecords === 0) {
console.error('No matching items');
return;
}
self.events(records);
self.fetchRecords2();
if (self.organization() != "") {
self.events.push(self.organization);
self.organization("");
}
});
};
self.fetchRecords2 = function() {
var query2 = { recordType: 'Organization', filterBy: [{
fieldName: 'events',
comparator: 'EQUALS',
fieldValue: {value: self.events.recordName}
}] };
return publicDB.performQuery(query2).then(function (response2) {
if(response2.hasErrors) {
console.error(response2.errors[0]);
return;
}
var records2 = response2.records;
var numberOfRecords2 = records2.length;
if (numberOfRecords2 === 0) {
console.error('No matching items');
return;
}
self.organization(records2);
});
};
HTML 呼び出しは次のとおりです。
<div data-bind="foreach: events">
<div class="display">
<h3><span data-bind="text: recordName"></span></h3>
<h3><span data-bind="text: fields.event_title.value"></span></h3>
<h3><span data-bind="text: fields.date_of_event.value"></span></h3>
<h3><span data-bind="text: fields.event_ratings.value"></span></h3>
<h3><span data-bind="text: fields.organization_name.value"></span></h3>
</div>
</div>
すべてのイベント フィールド (最初の 4 つ) が表示されていますが、organization_name (Organization recordType から取得) が原因でエラーが表示されます。
任意の支援や提案をいただければ幸いです。