我正在尝试从html表单中提取数据并发送到我的数据库。我正在使用node.js,mongodb和mongoose。
我有一个这样的表格:
<form>
<label for="name">Nome:</label>
<input type="text" id="name">
<label for="email">Email:</label>
input type="text" id="email">
<button id="send" type="submit">Send</button>
</form>
我保存的代码准备就绪,我只是不知道如何提取字段的值。
这是我的路线:
router.get('/', function(req, res) {
res.render('client');
});
我准备好了这段代码:
var person = {
name: req.params.name,
email: req.params.email
};
var data = new dataSchema(person);
data.save(function (error, data){
if(error) {
console.log(error);
res.json(data);
}
else {
res.json(data);
}
});
代码的其余部分(新架构,mongoose.model等......完美无缺)。现在剩下的就是提取表格的字段。
UPDATE ..
rdegges有些不对劲,现在这是我的代码:
<form method="post">
<label for="name">Nome:</label>
<input type="text" id="name">
<label for="email">Email:</label>
<input type="text" id="email">
<button id="send" type="submit">Send</button>
</form>
在我的路线中:
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
router.get('/login', function(req, res) {
res.render('client/index');
});
router.post('/login', function(req, res) {
res.json(req.body); // handle the user form data
console.log(req.body);
});
有什么不对吗?该对象是空的。
答案 0 :(得分:1)
您需要使用body-parser
中间件,如下所示:
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/', function(req, res) {
res.json(req.body); // req.body is your form data
});
如果您执行上述操作,则可以在代码中使用req.body
来访问表单数据,然后您可以将其传递到mongoose以保存模型。
此外,您很可能希望修改HTML表单,如下所示:
<form method="post">
</form>
这意味着您将为您的服务器创建一个POST请求,这是您在路线中使用的。
以下是一个例子:
app.get('/login', function(req, res) {
// render the form
res.render('login');
});
app.post('/login', function(req, res) {
res.json(req.body); // handle the user form data
});