2012-04-19 41 views
1

我想做一個從一個nodejs文件到另一個nodejs文件的重定向。我用res.redirect(URL),但是當執行它說:「不能GET/nodepage」Node.js重定向到另一個node.js文件

目前我使用

// Handler for GET/
app.get('/nodepostgres', function(req, res){ 
    res.redirect('/nodepost.js?a=1'); 
}); 

回答

4

我覺得有幾件事情,你不解釋正確或在你的問題中沒有正確理解。

我不確定你的意思是「從一個nodejs文件重定向到另一個nodejs文件」。您似乎認爲節點腳本文件對應於一個URL(或一個頁面)。這是錯誤的。節點腳本對應於可能(或可能不)通過多個URL公開多個頁面並且可以從其他腳本文件(您將爲站點或應用程序運行單個根腳本文件)導入應用程序邏輯的應用程序。這與你所知道的(vannilla,沒有框架)PHP完全不同。

通過不同的URL顯示不同的頁面稱爲路由,關於路由的所有Express文檔可以是found here

我的理解是,您試圖爲每個腳本創建一個函數/頁面/ Url:nodepost.js文件是一個頁面。代碼組織是一件好事,但我們首先關注node + express如何工作。

據我所知,你是一個應用有幾個裸露的網址,讓我們說:

  • 「/」 主頁
  • 「/ nodepostgre」(可能接受一個 'A' ARG?)
  • 「/ nodepost」接受這樣的Arg:一個

注:我們忘記文件=頁面的ID,我們不希望的擴展,出現在URL,這樣nodepost.js變得nodepost

你可以做的是設置了3網址論述:

app.get('/', function(req, res) { res.render('home'); }); // render the home page 
app.get('/nodepost', function(req, res) { // expose the nodepost function 
    var a = req.params.a; 
    doSomethingWith(a); 
    // res.render, res.send ? whatever you want... 
]); 
app.get('/nodepostgres', function(req, res){ // use of res.redirect(url[, status]) 
    res.redirect('/nodepost'); 
}); 

這是你想要的嗎?

然後,這是一個更優雅的方式來處理參數(「a」)。

app.get('/notepost/:a', function(req, res) { // called via /nodepost/here_goes_a_valu ; no "?" 
    var a = req.params.a; 

});

爲什麼它更好?

  1. 尊重REST(可能不來形容休息,但...最好的鏈接)
  2. 讓您揭露 '/ nodepost' 沒有PARAMS
  3. 的確曾有一架百萬的東西
相關問題