2015-06-10 2 views
0

Я использую Node.js Cloudant DB Web Starter для простого приложения, которое принимает форму ввода от пользователя и вставляет его в базу данных Cloudant, но я могу 't получить управление возвращено назад к форме или другой странице. Я очень новичок в этом, поэтому вполне может быть недостаток знаний. Когда я ввожу информацию в поля и нажимаю submit, данные захватываются из полей и вставляются в облачную БД, но тогда браузеры просто отображают «ОК» и не возвращаются к форме. То, что я хочу сделать, это вернуться на ту же страницу.node.js обрабатывает форму с помощью Node.js Cloudant DB Web Starter

**app.js** 

var db = nano.use('contactme'); 

var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

app.post('/', function(req, res) { 
// console.log(req.body); 
    res.sendStatus(200); 
    res.redirect('http://xyz.mybluemix.net/#top'); 

var form_name=req.body.name; 
var form_email=req.body.email; 
var form_message=req.body.message; 

db.insert({"email": form_email, 
    "name": form_name, 
    "message": form_message}, null, function(err, body) { 
    if (!err){ 
console.log(body); 
    } 
}); 

}); 

**index.html** 
<p>If you would like to contact me please use this form below.</p> 

<form method="post" action="/" > 
<div class="row 50%"> 
<div class="6b"><input type="text" name="name" placeholder="Name" /></div> 
<div class="6b"><input type="text" name="email" placeholder="Email" /></div> 
</div> 
<div class="row 50%"> 
<div class="12b"> 
<textarea name="message" placeholder="Message"></textarea> 
</div> 
</div> 
<div class="row"> 
<div class="12b"> 
<input type="submit" value="Send Message" /> 
</div> 
</div> 
</form> 
+0

, где он возвращается, как только вы отправляете форму? есть ли у вас какие-либо другие маршруты в приложении Node.js? –

ответ

0
var express = require('express'); 
var fs = require('fs'); 

var app = express(); 

var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var index = fs.readFileSync('./index.html'); 

// primary route which handles get request, when the browser access first time. 
app.get('/', function(req, res) { 
// provide the form 
res.end(index); 
}); 

// form route. Do the db stuff with the form data, and give back the form. 
app.post('/', function(req, res) { 
console.log(req.body); 
    // do with the db stuff. 
res.end(index); 
}); 

app.listen(30000); 

Надеется, что это помогает. Ваш код находился между псевдокодом и реальным. Поэтому я сохранил только минимальные вещи, чтобы продемонстрировать повторную отправку формы клиенту.

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