2016-08-24 57 views
1

我正在创建一个angular2应用程序,在该应用程序中,我在我的服务中使用http使POST致电mongoDBangular2-rc1 http.post无法正常工作

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

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

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

这里是我的代码:

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数据

page.service.ts。

第一次请求

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

第二请求

body: {} 

任何投入?

+0

什么浏览器? 。 –

+0

Google Chrome版本52.0.2743.116 m(64位)..是浏览器的问题吗? –

+0

我想不是。不知道什么会导致这个问题。 –

回答

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); 
} 

奏效了我。 实际上,我们只需要在设置标头时设置一次,但在我的代码中已经设置好了,因此创建了新的Headers Object帮助我清除了以前设置的任何配置。

感谢您的帮助球员。

+0

我得到相同的错误,但已经设置标题只有一次。我正在使用rc4。任何想法? – Kishori

2

它看起来更像是一个后端的东西。然而,你应该包括在这个http调用中订阅的代码。

顺便说一句,你为什么使用RC1? Angular 2现在在RC5上。

+0

我同意Billias关于这个问题的两点意见。 –