angular2-rc1 http.post工作不正常

时间:2016-08-24 05:19:04

标签: node.js mongodb angular typescript angular2-http

我正在制作一个angular2应用,我在服务中使用http来POST拨打mongoDB

当我第一次进行POST调用时,它工作正常,即输入正确地插入数据库,但是当我第二次发送数据时,它没有被插入。

如果我在第一次插入后重新加载页面,那么它的工作正常。

我做了一些调试,发现在第二次请求时我的req.body是空白的。

这是我的代码:

page.service.ts

savePage(page: Object) {
    this.headers.append('Content-Type', 'application/json');
    let url = this.baseUrl+'/pm/pages/';      
    let data={};
    data["data"]=page;
    console.log(data); //this is printing both times correctly
    //on second request data is blank where as it works correctly for first time       
    return this.http.post(url, JSON.stringify(data),{headers: this.headers})
        .map((res: Response) => res.json()).catch(this.handleError);
}

以下是我在节点服务中显示的req.body中的数据。

第一次请求

body:{ 
    data:{ 
        name: 'wtwetwet',
        desc: 'wetwetwetetwte',
        isPublic: true,
        createdBy: 'Bhushan'
    }
}

第二次请求

body: {}

任何输入?

2 个答案:

答案 0 :(得分:2)

它看起来更像是一个后端的东西。但是,您应该包含在此http调用上订阅的代码。

顺便问一下,你为什么要用RC1? Angular 2现在在RC5上。

答案 1 :(得分:1)

我终于意识到我的方法每次调用时都会设置内容类型。

从而改变代码:

savePage(page: Object) {
    this.headers.append('Content-Type', 'application/json');
    let url = this.baseUrl+'/pm/pages/';      
    let data={};
    data["data"]=page;           
    return this.http.post(url, JSON.stringify(data),{headers: this.headers})
    .map((res: Response) => res.json()).catch(this.handleError);
}

为:

savePage(page: Object) {
    this.headers=new Headers();
    this.headers.append('Content-Type', 'application/json');
    let url = this.baseUrl+'/pm/pages/';      
    let data={};
    data["data"]=page;             
    return this.http.post(url, JSON.stringify(data),{headers: this.headers})
    .map((res: Response) => res.json()).catch(this.handleError);
}

为我做了诀窍。 实际上我们需要在进行休息调用时只设置一次标题,但在我的代码中它已经设置,因此创建新的标题对象帮助我清除任何先前设置的配置。

感谢帮助人员。