2017-06-16 66 views
1

我需要查詢數據庫,我正在使用create-react-app。連接到數據庫的庫(pg-promise)不能與Webpack一起使用,需要在節點服務器上運行。創建反應應用程序與快遞

因此,我安裝Express和有這樣的:

app.get('*', (req, res) => { 
    res.sendFile(path.resolve(__dirname, '..', 'build', 'index.html')); 
}) 

我如何可以加載數據從數據庫從頁面做出反應?我雖然使用request,但我如何向自己的服務器發出請求?我應該在上面的代碼中添加什麼?我認爲它會是這樣的:

app.get('/query/:querybody', (req, res) => { 
    // process and return query 
}) 

這是正確的嗎?我怎樣才能使它與SPA一起工作?

+0

如果你想要去的全堆棧在Reactjs試試這個:[mern。 io](http://mern.io) –

+0

實際上我需要一個快速修復,但是謝謝! – ocram

回答

1

可能最無摩擦的方法是在您的CRA應用程序旁邊單獨使用app.jsserver.js。您可以使用像concurrently這樣的工具來運行您的React應用程序和快速應用程序。

訣竅是爲您的快速應用程序服務於不同的端口,而不是CRA服務的默認:8080。通常8081是一個不錯的選擇,因爲在開發時使用相互靠近的端口號是一種常見的慣例。

在你作出反應的應用程序,你需要確保你使用的完整網址Express端點:http://localhost:8081/query/...

+2

或者他可以在Webpack中設置代理。 create-react-app支持。 [這裏是一個例子](https://github.com/nataly87s/react-app-with-server) – Nataly87

+0

這是一個偉大的觀點! – rossipedia

0

在您將要在正確的方向上的服務器端:你需要設置端點將響應根據請求提供數據。在你的例子中,你爲GET HTTP請求設置了一個端點。如果您需要傳遞複雜請求(例如向數據庫添加新記錄),請考慮使用POST HTTP請求。

在客戶端(在瀏覽器中),您將需要一個庫來協助您向服務器發送請求。我可以推薦嘗試Axios(https://github.com/mzabriskie/axios)。通常,如果你省略協議,服務器名稱和端口,請求將被髮送到從中加載頁面的服務器: http:127.0.0.1:8001/api/endpoint =>/api/endpoint

相關問題