作者:短工邦技术部 - 陈文哲
nodejs入门之后,其实和其它服务端语言的使用逻辑是类似,需要什么就找什么资料就行了。前面的章节主要是各个组件的使用方法,这次联合起来做一个登陆的交互,因为空闲时间不多,我就直接从项目中抽取最简洁的代码贴出来了,可能会报错哦。
前端代码
form(method='POST' action='/Account/login')
p账号:
input(type='text' name='UserName')
p密码:
input(type='password' name='Password')
input(type='submit' value='登录')
点击登录后,会把表单数据POST到/Account/login,所以我们要新建一个ROUNT来处理这个表单数据
ROUNT代码
//在server.js处理请求
//var app = express();
var accountROUTE = require('./ROUTE/AccountROUTE')
app.post('/Account/login',accountROUTE.login)
在ROUNT目录下新建AccountROUTE.js,代码如下
exports.login = function(req,res){
var User = req.body; //见body-parser段落
if(User.UserName && User.Password) {
//findByKeyValue见UserMODEL
userMODEL.findByKeyValue({"UserName":User.UserName}, function(err,result) {
if( result.length <= 0 ) {
//"不存在该用户"
}
else{
if(User.Password != result[0].Password){
//"密码错误"
}
else{
req.session.user = result[0];//见session段落
//登陆成功
}
}
});
}
else{
//"请填完所有信息项",res);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
body-parser
简单说,这个可以把前端POST过来的表单数据直接转换到req.body,是一个JSON对象,Key值就是前端的name,Value值就是前端的value
//安装
npm install body-parser
//在服务入口端server.js新增代码
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
UserMODEL
//完整的MODEL代码
var Schema = require('mongoose').Schema;
var MODEL = Schema({
UserName: String,
Password: String,
Type: String,
Name: String,
Phone: String,
CompanyName: String,
Intro: String,
meta:{
createdAt:{
type:Date,
default:Date.now()
},
updatedAt:{
type:Date,
default:Date.now()
}
}
}, {collection: "User"});
//定义该MODEL的能提供的数据操作
MODEL.statics = {
//KeyValue是一个JSON对象,可以根据需求自由传入
findByKeyValue : function( KeyValue, cb ) {
return this.find(KeyValue).exec( cb );
}
};
//每一次保存之前会调用这个方法;
MODEL.pre("save",function(next) {
if(this.isNew){
this.meta.createdAt = this.meta.updatedAt = Date.now();
}
else{
this.meta.updatedAt = Date.now();
}
next();
});
/* global db */
module.exports = db.model('UserMODEL', MODEL);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
session
npm install cookie-parser
var session = require("express-session");
var cookieParser = require('cookie-parser');
app.use(cookieParser());
//内存存储方式使用session
app.use(session({
secret : "mysecret",
cookie: {maxAge: 8000000 }, //即8000s后session和相应的cookie失效过期
resave: false,
saveUninitialized: true,
}));