我是Node.js的新手,最近几天一直在试图使用Express.js和MySql制作一个简单的登录注册功能。
我已经在我的电脑上安装了Node,并使用Express-Generator创建了一个基本的文件夹结构(包括views、routes和public文件夹)。
我知道如何使用ejs将变量从node传递到前端,但我不知道如何将其传回。我尝试观看了一些网络教程,但似乎没有让我理解其中的逻辑。我应该把MySql代码放在哪里?当用户点击“提交”时,如何将输入值传回后台?
我是Node.js的新手,最近几天一直在试图使用Express.js和MySql制作一个简单的登录注册功能。
我已经在我的电脑上安装了Node,并使用Express-Generator创建了一个基本的文件夹结构(包括views、routes和public文件夹)。
我知道如何使用ejs将变量从node传递到前端,但我不知道如何将其传回。我尝试观看了一些网络教程,但似乎没有让我理解其中的逻辑。我应该把MySql代码放在哪里?当用户点击“提交”时,如何将输入值传回后台?
请使用Sequelize来操作MySQL,这是Jake的建议。
我将为您提供一些入门步骤,之后您可以深入学习每个过程和工具。
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>
login
。该路由为:
2) 路由
module.exports = function (app){
var login = app.controllers.login;
app.get('/', login.index);
app.post('/login', login.login)
};
route
将调用名为login.js
的控制器中的login
方法。
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;
};
res.SOME_METHOD
}}:
res.send();
res.end();
res.download();
res.json();
附加: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
},
});
我建议在编写代码之前,先阅读必要的文档。
response
,Sequelize和sequelize.query
文档。 - BrTkCa