mysql - 使用node js将数据从html表单发送到mysql数据库

标签 mysql node.js forms

我正在制作一个应用程序,我想要一个注册页面。这是 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;
})();

我的用户.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.

我不知道我在哪里遗漏了一些东西,有人有什么想法吗?

最佳答案

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

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éé'});
      }
    });

  });
};

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

因此,在“名字”输入中,将输入元素的名称属性设置为“名字”之类的内容。然后当服务器收到请求时,您可以访问req.body中的'firstname'。

您的 HTML 输入应如下所示:

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

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

req.body.firstname

关于mysql - 使用node js将数据从html表单发送到mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44872786/

相关文章:

java - Servlet 只读取 Excel 文件的前两行

未添加 Javascript 对象属性

javascript - 需要指导尝试使用 Node js 设置带有 strip 的可变数量

php - 如何修复我的电子邮件联系表单 PHP 中的这些错误?

mysql - 如何编写sql代码来获取2个日期之间的数据?

mysql - 如何对不区分大小写的 MySQL 数据库执行区分大小写的搜索?

PHP MYSQL 无法连接 (HY000/2002)

node.js - 启动 N|Solid Proxy 时出现 'Could not find configuration for port' 错误

javascript - 单击即可添加 2 个动态字段

javascript - 处理表单时禁用提交按钮