2016-08-24 2 views
1

Я создаю одно приложение angular2, в котором я использую http в своем сервисе, чтобы сделать POST зов к mongoDB.angular2-rc1 http.post не работает правильно

Когда я делаю звонок 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: {} 

любые материалы?

+0

Какой браузер? , –

+0

Google Chrome Version 52.0.2743.116 м (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); 
} 

сделал трюк для меня. На самом деле нам нужно устанавливать заголовки только один раз, делая вызов для отдыха, но в моем коде он уже был установлен, поэтому создание нового объекта заголовков помогло мне очистить любые ранее установленные конфигурации.

Спасибо за помощь, ребята.

+0

Я получаю ту же ошибку, но уже заголовок установлен только один раз. Я использую rc4. Есть идеи? – Kishori

2

Это больше похоже на бэкэнд. Однако вы должны включить код, который подписывается на этот http-вызов.

Кстати, почему вы используете RC1? Угловое 2 теперь находится на RC5.

+0

Я согласен с Биллиасом в обоих пунктах по этой проблеме. –