2016-07-27 10 views
0

私はテスト目的のためにいくつかのダミーデータをMongoコレクションに追加するためのフォームを構築しました。データを追加する機能は正常に動作しているようですが、データが正常に追加されているようですが、何らかの理由で機能の最後にあるリダイレクトコマンドが機能していません。このデータは、標準的な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(); 
      }); 
     } 
    }); 
}); 

私は進歩し、それらの最終「データ挿入の成功」1を含むすべての火を、チェックすることができるようにいくつかの場所でコンソールにログインするための行を追加しました。しかし、それに続く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

上記のノードの問題は少し赤いニシンだったようです。リダイレクトは実際には正常に機能しています(上記のMrWillihogさんのコメントは、今後の参照用としても十分に注意してください)。私は、npmコンソールのすべての応答コードが正常にチェックアウトされていなければならないと考えました。この問題は実際にJadeテンプレートのレンダリングと関係しています。具体的には、私はHTMLの頭部を設定するために使用するファイルlayout.jadeと関係があります。何らかの理由で(まだ決定されていない)、URLで/ formsページを直接呼び出すと問題なく動作します。 layout.jadeファイルがレンダリング(私はH1を置く:リダイレクトから呼び出された場合layout.jadeページが正しくロードに失敗して、ファイルforms.jadeは開いBODYタグで

extends layout 

block content 

で標準的な方法で起動しますチェックするためにそこに)、しかしforms.jadeはありません。

私は(block.content下)forms.jadeすることでダウンBODYを移動し、それはしかし仕事を始め、私は少しだ再び

「/ accadd」として興味深いのは、アドレスバーのURLが残っています私はこのパターンを何も問題なく使用していたので、困惑しました。私は単純なものを忘れてしまったと思う。私は答えが見つかるまで掘り下げていきますが、少なくとも今は正しい場所を探していなければなりません。

関連する問題