2016-07-27 68 views
0

我已經構建了一個表單來爲測試目的添加一些虛擬數據到Mongo集合。添加數據的功能似乎可以正常工作,因爲數據正在添加好,但由於某種原因,函數末尾的重定向命令沒有做到這一點。數據來自bog標準HTML表單。下面是用於添加數據的代碼:節點/ Javascript重定向不工作?

router.post('/addacc',function(req,res){ 
    var sljEdate = ""; 
    var pljEdate = ""; 
    var MongoClient = mongodb.MongoClient; 
    var url = 'mongodb://localhost:27017/stc'; 
    MongoClient.connect(url,function(err,db){ 
     if(err){ 
      console.log("Connection Error"); 
     }else{ 
      console.log("connected to mongo"); 
      var collection = db.collection('account'); 
      var query = {accountID: req.body.acc_id,companyName: req.body.acc_name,companyEmail:req.body.acc_email,companyPhone:req.body.acc_phone,companyPostCode:req.body.acc_postcode, 
         photographers: {phtID:"",phtName:"",phtPhone:"",phtEmail:"",phtLoc:"",preferredContact:"",lastJob:"",pljEpoch:pljEdate,phtNotes:""}, 
         schools: {schoolID:"",schoolName:"",schoolPhone:"",schoolEmail:"",schoolPostCode:"",lastJob:"",sljEpoch:sljEdate,notes:""}}; 
      collection.insert(query,function(err,result){ 
       if(err){ 
        console.log("Error inserting Account record",err); 
       }else{ 
        console.log("Data Insert Success"); 
        res.redirect("/forms"); 
       } 
       db.close(); 
      }); 
     } 
    }); 
}); 

我添加的行記錄到在一些地方控制檯,這樣我可以檢查進度,他們都火,包括最後的「數據插入成功」之一。然而,它後面的res.redirect不做任何事情。在瀏覽器中,URL保持爲'/ addacc',儘管節點控制檯顯示了'/ forms'URL的後續GET。

我已經嘗試了一些重定向的變體,例如, res.send(「test」)只是爲了嘗試輸出一些東西,也是一個res.render函數,但它們都不起作用。

我很確定我錯過了一些簡單的事情,但我一直在盯着代碼太久,我看不出有什麼問題。事實上,我有很多次相同的代碼工作。我這次做的唯一一件事就是我插入到包含嵌入文檔的Mongo集合中,但數據插入並不是問題,因爲數據沒有問題。

請幫忙!

+0

我認爲重定向POST請求有點不同。請參閱:http://stackoverflow.com/questions/17612695/expressjs-how-to-redirect-a-post-request-with-parameters – MrWillihog

+0

好的,這是有趣的和有益的,謝謝。我會多一點戲,看看它是否能讓我獲得任何地方。 – Drum

回答

0

好的,看起來上面的Node問題有點兒是紅鯡魚。重定向實際上正常工作(無論如何,MrWillihog的以上評論都很適合未來的參考)。我認爲這一定是因爲npm控制檯上的所有響應代碼都檢查完好。問題實際上是與呈現Jade模板有關。特別是與我用來設置HTML頭的文件layout.jade有關。出於某種原因(尚未確定),直接在URL中調用/ forms頁面時,工作正常。該文件forms.jade在標準的方式開始與

extends layout 

block content 

隨着layout.jade頁面口主體代碼無法正確加載中的重定向調用時:在layout.jade文件呈現(我把一個H1在那裏檢查),但forms.jade不會。

我倒在移動身體forms.jade(下block.content),並開始工作,雖然,有趣的是,在地址欄中的URL仍是「/ accadd」

再次聲明,我有點因爲我已經多次使用這種模式而沒有任何問題,所以難住了。我猜測我只是忘記了一件簡單的事情。我會繼續挖掘,直到我找到答案,但至少現在我應該在正確的地方尋找。