2016-09-23 15 views
1

ユーザーがフォームを送信したときにNode.JSでExpressを使用して動的に新しいページを作成する方法を見つけようとしています。ここに私の考えはありますが、うまくいきません:Node.JS:Expressで新しいページを作成

var app = require('express')(); 
var server= require('http').createServer(app); 
var bodyParser = require('body-parser'); 
var urlencodedParser = bodyParser.urlencoded({ extended: false }); 

function Page(name){ //Create a page prototype 
//Some variables and methods specific to the page 
      app.get('/'+name, function (req, res) { 
       res.render('index.ejs', {someVars: someVars}); 
      }); 
} 

//When a user submits a form, create a new page 
app.post('/submit', urlencodedParser, function(req, res){ 
    var nom = req.body.nom; 
    var newPage = new Page(nom); 
    res.redirect('http://myDomain/' + nom); 
}); 

これを行う最良の方法は何ですか?私は、これはあなたが救うことができる

答えて

0

を助けることを願っていますが、ビューエンジンとしてejsを追加し、index.ejsを作成していることを確認した後、

var app = require('express')(); 
var server= require('http').createServer(app); 
var bodyParser = require('body-parser'); 
var urlencodedParser = bodyParser.urlencoded({ extended: false }); 

// set the view engine to ejs 
app.set('view engine', 'ejs'); 

app.get("/:pageName", function (req, res) { 
    var pageName = req.params.pageName; 
    res.render('index.ejs', {someVars: someVars}); 
}); 

//When a user submits a form, create a new page 
app.post('/submit', urlencodedParser, function(req, res){ 
    var nom = req.body.nom; 
    res.redirect('http://myDomain/' + nom); 
}); 

を、以下のような動的ページ用のgetルートを追加する必要が

0

データベース内に作成されたページの名前を明示的に設定してください:

//When a user submits a form, create a new page 
app.post('/submit', urlencodedParser, function(req, res){ 
    var nom = req.body.nom; 
    /* save nom to database */ 
    res.redirect('http://myDomain/' + nom); 
}); 

app.get('/:nom', function(req, res){ 
    /* if nom exists in database -> return ejs template with vars */ 
    /* else return 404 */ 
}); 

hav存在しないページがあります。

関連する問題