提取表单数据并使用node.js发送到我的数据库

时间:2014-12-12 18:37:50

标签: javascript node.js mongodb mongoose

我正在尝试从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);
});

有什么不对吗?该对象是空的。

enter image description here

1 个答案:

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