在 iOS 应用程序的网站上工作,我缺乏 javascript 知识,我可以使用一些指导。
我的 CloudKit 数据库至少有两个记录类型:事件和组织,每个都有多个字段。组织记录类型包含对特定事件记录名称的引用。我正在尝试编写一个顺序查询,以便在调用每个事件后,它的记录名称将用于过滤组织的查询,以便我可以获取引用该事件的组织的相关名称、徽标等字段。
这种方法适用于 iOS 代码(XCode 7、Swift 2)。我可以成功调用knockoutjs代码中的每个recordType,所以我知道对db的访问是可以的。
下面的代码目前设置第一个函数(fetchRecords)调用第二个函数(fetchRecords2),然后合并两组记录。我确信这是一个糟糕的结构,但我尝试了不同的方法,现在有点迷失了。
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>
我看到所有事件字段(前四个),但组织名称(来自组织记录类型)导致出现错误。
任何帮助或建议将不胜感激。