2017-08-16 21 views
0

我想從一個Angular 4應用使用URLSearchParams向Express + Node服務器發送一個get/post請求,無論我做什麼我都無法獲得服務器中的數據。URLSearchParams從get/post在Angular節點服務器中是空的

我在做這樣的事情

let params: URLSearchParams = new URLSearchParams(); 
params.set('company', company); 
return this.authHttp 
     .get(`${api}/${id}`, { search: params, params }) 

爲http.get第二個參數是RequestOptionsArgs,這是

interface RequestOptionsArgs { 
    url?: string|null 
    method?: string|RequestMethod|null 
    search?: string|URLSearchParams|{[key: string]: any | any[]}|null 
    params?: string|URLSearchParams|{[key: string]: any | any[]}|null 
    headers?: Headers|null 
    body?: any 
    withCredentials?: boolean|null 
    responseType?: ResponseContentType|null 
} 

所以這應該工作正常,但是當我試圖讓在服務器req.query.company事實證明,req.query是未定義的。在req.params中,我可以找到我在url中發送的id,但也沒有公司。

任何關於我可能做錯什麼的想法?

感謝

+0

檢查我的回答對角4。 – Niladri

+0

你可以發佈authhttp服務的代碼嗎? – Niladri

+0

該問題太廣泛,缺乏http://stackoverflow.com/help/mcve。您應該檢查網絡選項卡並提供此信息。如果請求中存在參數,那麼Angular部分是無關的,這純粹是Node問題。否則,Node部分是不相關的,這純粹是Angular的問題。 – estus

回答

1

編輯:更新我的回答與簡化版

let params: URLSearchParams = new URLSearchParams(); 
return this.authHttp 
    .get(`${api}/${id}`, { params: { company: company } }); 
+0

我改變了追加設置,但沒有發生;我想這是用來當你想添加多個元素的參數;在我的情況下,我只使用一個,所以它是有意義的 – David

+0

你改變它{{search:params}'?你如何解析節點服務器上的搜索參數? – Niladri

+0

{search:params,params}或{search:params}應該是一樣的,我只是在兩個不同的字段中傳遞URLSearchParams。在節點服務器中,我使用req.params和req.query來獲取數據。 – David