2016-09-23 2 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

Вы можете сохранить имена созданных страниц в базе данных и набор необязательных параметров в экспресс:

//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 */ 
}); 

Его следует хранить в базе данных, чтобы предотвратить хав которые не существуют.

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); 
}); 

Я надеюсь, что это поможет вам

Смежные вопросы