2017-04-02 68 views
0

我將演示這個簡單的代碼,我的問題中的POST請求:使用GET請求的回電(瓶蓋)

app.get('/test', (req, res) => { 
    let x = req.query.someVar; 
    app.post('/test', (req, res) => { 
     console.log(x); 
    }); 
    res.send(`Hello ${req.query.someVar}`); 
}); 

第一次運行此代碼,該POST回調函數保存到x參考其是無論我作爲查詢參數傳遞。如果我更改查詢參數,則發送另一個GET請求,它將在服務器響應中更新,即res.send( Hello $ {req.query.someVar} );但POST請求仍將原始x值記錄到控制檯。

它爲什麼這樣表現?我已經嘗試了很多東西,如傳遞對象和通過其他函數等。

我熟悉閉包的工作方式,但顯然不完全,因爲這絕對是POST回調的問題,保留了值查詢參數並且不更新它們。

謝謝。

回答

1

我不確定你在做什麼。沒有人在GET中定義POST,除非您希望GET請求更改服務器的行爲,否則他們會在根級別執行此操作。 app.post表示'添加一條新路線來處理POST'。也許你想實際上發送來自GET處理程序的HTTP請求?

如果您希望更改行爲,可能只是在根級別處理POST並在GET處理程序中設置全局標誌,以指示POST應該對後續請求執行不同的操作。

+0

我正在通過查詢參數獲取信息,這些查詢參數需要在發送到同一頁面的請求時查詢數據庫。因此,我需要該帖子才能訪問查詢參數 – JohnSnow

+1

因此,爲了執行該操作,客戶端需要GET和POST到相同的URL?從來沒有聽說過任何人這樣做..如果你真的需要存儲狀態,你可以使用數據庫或類似全局變量,而不是閉包。但我想通常你只需要發送POST請求。 –

+0

是的,我明白了,謝謝 – JohnSnow