Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 2和Cloudkit JS-解析响应承诺_Angular_Es6 Promise_Angular2 Services_Cloudkit Web Services - Fatal编程技术网

Angular 2和Cloudkit JS-解析响应承诺

Angular 2和Cloudkit JS-解析响应承诺,angular,es6-promise,angular2-services,cloudkit-web-services,Angular,Es6 Promise,Angular2 Services,Cloudkit Web Services,我正试图让Angular 2与Cloudkit JS一起工作,目前这是一个简单的任务 todo.request.js: var todorequest = { get: function(){ var container = CloudKit.getDefaultContainer(); var publicDB = container.publicCloudDatabase; var query = { reco

我正试图让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[] 
            );
    }
}
从'@angular/core'导入{Injectable};
从“/Todo”导入{Todo};
声明var todorequest:任何;
@可注射()
将类导出到服务{
构造函数(){}
getTodos(){
返回新承诺(解决=>
todorequest.get()作为Todo[]
);
}
}

我假设我从todorequest.get()得到的是一个承诺,比如
Object{Symbol(record)\u 1.k31kpejw2af:Object}
。如何将其转换为dotodo[],以便能够使用数据?老实说,我不确定我做错了什么。

我想出来了!我在服役时缺少了解决方法

getTodos() {
        return new Promise<Todo[]>(resolve =>
            resolve(todorequest.get())
            );
    }
getTodos(){
返回新承诺(解决=>
解析(todorequest.get())
);
}