我正在尝试从 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 等.. 是完美的)。现在剩下的就是提取表单的字段。
更新..
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>
在我的 route :
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);
});
有什么问题吗?该对象是空的。
最佳答案
您需要使用 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
});
关于javascript - 提取表单数据并使用 node.js 发送到我的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449970/