【发布时间】:2016-12-25 02:56:34
【问题描述】:
我正在尝试让 Angular 2 与 Cloudkit JS 一起工作,目前是一个简单的 Todo。
todo.request.js:
var todorequest = {
get: function(){
var container = CloudKit.getDefaultContainer();
var publicDB = container.publicCloudDatabase;
var query = {
recordType: 'todo'
};
return publicDB.performQuery(query).then(function (response) {
if(response.hasErrors) {
throw response.errors[0];
} else {
let vals = [];
response.records.forEach(function(record){
vals.push({title: record.fields['title'].value, text: record.fields['text'].value, date: record.fields['date'].value})
})
console.log(vals)
return vals;
}
})
}
}
这会返回Array [ Object, Object ],这是我想要的,到目前为止一切都很好。
todo.service.ts 有以下内容:
import { Injectable } from '@angular/core';
import { Todo } from './todo';
declare var todorequest:any;
@Injectable()
export class TodoService {
constructor() {}
getTodos() {
return new Promise<Todo[]>(resolve =>
todorequest.get() as Todo[]
);
}
}
我假设我从 todorequest.get() 得到的是一个承诺,例如Object { Symbol(record)_1.k31kpejw2af: Object }。我如何将它转换为 Todo[],这样我就可以使用数据了?老实说,我不确定自己做错了什么。
【问题讨论】:
标签: angular es6-promise angular2-services cloudkit-web-services