1

我想讓Angular 2與Cloudkit JS一起工作,目前是一個簡單的Todo。Angular 2和Cloudkit JS - 解決響應承諾

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 [],這樣我就可以使用這些數據了?說實話,我不知道我做錯了什麼。

回答

2

想通了!我失蹤解析服務中

getTodos() { 
     return new Promise<Todo[]>(resolve => 
      resolve(todorequest.get()) 
      ); 
    }