从前端将数据发送回node.js服务器

时间:2015-10-14 18:02:26

标签: javascript mysql node.js express ejs

我是Node.js的新手,我试图找出如何使用带有EJS模板引擎和MySql的Express.js为网站创建一个简单的登录注册功能。

我已经在我的电脑上安装了Node,并且我已经使用Express-Generator来制作基本的文件夹结构(视图,路线,公共文件夹)。

我理解如何使用ejs将变量从节点传递到前端,但我不知道如何将变量传回去。我曾尝试在互联网上观看一些教程,但似乎没有什么能让我看到逻辑。我在哪里放MySql代码?一旦用户点击"提交"?如何传回输入值?

2 个答案:

答案 0 :(得分:3)

杰克说,我建议将Sequelize用于MySQL。

我会尝试为您的开始做一个小步骤,然后您可以了解有关每个流程和工具的更多信息。

1)前端(EJS);

  <form id="login" action="/login" method="post">
      <input name="username" type="text">
      <input name="password" type="password">
      <input type="submit">Ok</input>
  </form>

此处,表单会请求route login。路线:

2)路线

module.exports = function (app){

    var login = app.controllers.login;

    app.get('/', login.index);
    app.post('/login', login.login)
};

route将调用名为login的控制器中的login.js方法。

3)控制器

module.exports = function(app) {

  var sequelize = require('./../libs/pg_db_connect'); // resquest lib of connection to mysql/postgres

  var LoginController = {
    index: function(req, res) {
      res.render('login/index');
    },

    login: function(req, res) {    
      var query = "SELECT * FROM users"; // query for valid login

      sequelize.query(query, { type: sequelize.QueryTypes.SELECT}).then(function(user){    

        if (req.body.username == user[0].username  && req.body.password === user[0].password ){ 
            res.redirect("/home");     
          } else {
            res.render("login/invalid_access");
          }

      });

    }
  };
  return LoginController;
};

在这一点上,执行查询以验证登录是否有效并验证用户是否可以登录。Request方法是要点。

对于响应和发送信息以进行查看,它使用res.SOME_METHOD

  

res.send();

     

res.end();

     

res.download();

     

res.json();

Plus:Sequelize MySQL连接。

在express结构中,它本地化在lib / my_db_connection.js:

var Sequelize = require('sequelize');
module.exports = new Sequelize('database_name', 'user', 'pass', {
    host: 'localhost',
    dialect: 'mysql',
    pool: {
        max: 10,
        min: 0,
        idle: 10000
    },
});

我建议您在编码之前阅读必要的文档。

答案 1 :(得分:1)

您将不得不使用某种AJAX库(或vanilla js ajax)将信息发送到您在express中设置的http端点。对于简单的东西,jquery ajax方法会做得很好。您可能正在寻求发出POST请求。

对于MySql代码,请查看Sequelize。它是一个很酷的库,用于与express的sql数据库进行交互。它类似于mongoose对mongo的作用。