使用节点js将数据从html格式发送到mysql数据库

时间:2017-07-02 16:11:37

标签: mysql node.js html-form

我正在制作应用,我想要一个注册页面。这是html表单:

<form method="post" action="/register">
  <p>Nom <input type='text' id="nom"></p>
  <p>Prénom <input type='text' id="prenom"></p>
  <p>Mot de passe <input type='text' id="mdp"></p>
  <p>Email <input type='text' id="email"></p>
  <input type="submit" value="Valider" id="envoyer">
 </form>

我的server.js:

var express = require('express');
var async = require('async');
var bodyParser = require("body-parser");
var mysql = require('mysql');
var hostname = 'localhost';
var port = 3000;
var app = express();

////////////////
//   MYSQL    //
////////////////

const connection = require('./config/database');

connection.connect(function (err){
    if (err) throw err;
    console.log("Le serveur s'est bien connecté sur la base de donnée MYSQL")
});

////////////////
//   ROUTING  //
////////////////

var home = require('./app/routes/home');
var login = require('./app/routes/users/login');
var register = require('./app/routes/users/register');

app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

app.get('/', home);
app.get('/login/', login);
app.post('/register/', register);

////////////////
//   SERVER   //
////////////////

app.listen(port, hostname, function(){
    console.log("Mon serveur fonctionne sur http://"+ hostname +":"+port);
});

我的register.js:

module.exports = (function() {
    'use strict';

    const connection = require('../../../config/database');
    var router = require('express').Router();
    var User = require('../../models/User');

    router.get('/register', function(req, res) {
      console.log(req.body.firstname)
        User.addUser(req.query.firstname, req.query.lastname, req.query.email, req.query.password,function(err,rows){
          if(err)
          {
              return res.json({
                  'code':'500',
                  'success':'false',
                  'msg': err
              });
            }

            else{
                    return res.json({
                        'code':'200',
                        'success':'true',
                        'msg':'Bonjour '+rows[0].firstname+', vous avez bien été créé'
                    });
            }

        });
    });
    return router;
})();

我的user.js:

  addUser:function(firstname,lastname,email,password,callback){

        return db.query
            (
              "INSERT INTO `users` VALUES (?,?,?,?)"
+                [firstname,lastname,email,password],
                callback
            );
    }, 

但是当我在表单中输入一些值时,我收到此错误:

The requested URL /register was not found on this server.

我不知道我遗失的地方有什么想法吗?

2 个答案:

答案 0 :(得分:0)

首先,您应该在定义路线时删除尾部斜杠:

app.post('/register', register);

在server.js文件中,您已经将/ register路由建立为POST路由,并将处理程序设置为register.js模块。请求数据直接发送到该功能,因此无需在其中设置新路由。以下是register.js的示例:

'use strict';

const connection = require('../../../config/database');
const User = require('../../models/User');

module.exports = function(req, res) {
    console.log(req.body.firstname);
    User.addUser(req.body.firstname, req.body.lastname, req.body.email, req.body.password,function(err,rows){
      if(err) {
        return res.status(500).json({
                'code':'500',
                'success':'false',
                'msg': err});
      } else {
        return res.status(200).json({
                'code':'200',
                 'success':'true',
                 'msg':'Bonjour '+rows[0].firstname+', vous avez bien été créé'});
      }
    });

  });
};

此外,在创建表单输入时,必须在每个表单上包含一个名称,以便服务器知道哪个属性是哪个。

所以在你的'first name'输入中,将input元素的name属性设置为'firstname'。然后,当服务器收到请求时,您可以访问req.body中的“firstname”。

您的HTML输入应如下所示:

<input type='text' name="firstname" id="someid">

然后在您的register.js中,您可以像这样访问该变量:

req.body.firstname

答案 1 :(得分:0)

addUser:function(firstname,lastname,email,password,callback){

        return db.query
            (
              "INSERT INTO `users` VALUES (?,?,?,?)"
+                [firstname,lastname,email,password],
                callback
            );
    }, 

错误来自语法错误“INSERT INTO”之后有一个“+”我应该删除:

addUser:function(firstname,lastname,email,password,callback){

        return db.query
            (
              "INSERT INTO `users` VALUES (?,?,?,?)"
             [firstname,lastname,email,password],
                callback
            );
    }, 

谢谢你的答案!