Nodejs如何使用KOA处理路由请求

node.js实现注册和登录页面,需要通过不同的路由地址返回不同的页面。
第一步:首先我们需要连接数据库,创建mongo.js

//引入mongoose模块
var mongoose=require("mongoose");
//定义mongodb地址,这里的oa代表着数据库
var DB_url="mongodb://localhost:27017/oa";
//连接mongodb
mongoose.connect(DB_url,{useNewUrlParser: true,useUnifiedTopology: true});
//连接成功时触发该事件
mongoose.connection.on("connected",function(){
	console.log("数据库连接成功");
});
//发生错误时执行该事件
mongoose.connection.on("error",function(err){
	console.log(err);
});
//连接失败时触发该事件
mongoose.connection.on("disconnected",function(){
	console.log("连接失败");
});
module.exports=mongoose;

第二步:我们需要定义Schema,创建user.js

const mongoose=require("./mongo.js");
//定义Schema
var Schema=mongoose.Schema;
var UserSchema=new Schema({
	username:{type:String},
	password:{type:String}
});
module.exports=mongoose.model("users",UserSchema);

第三步:写一个登录页面为login.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<h1>登录页面</h1>
		<form action="http://localhost:3000/login2" method="post">
			/*注意这里的name值需要和后面的js一致*/
			用户名:<input type="text" name="username" /><br />
			密码:<input type="password" name="pass" /><br />
			<input type="submit" value="登录" />
		</form>
	</body>
</html>

第四步:写一个注册页面为register.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<h1>注册页面</h1>
		<form action="http://localhost:3000/reg" method="post">
			用户名:<input type="text" name="username" /><br />
			密码:<input type="password" name="pass" /><br />
			<input type="submit" value="注册" />
		</form>
	</body>
</html>

第五步:写一个登录成功的页面为success.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<h1>恭喜你登录成功</h1>
	</body>
</html>

第六步:也是重要的一步,实现用户注册,登录。

//引入koa模块
const Koa=require("koa");
//引入koa-body模块
const koaBody=require("koa-body");
//引入koa-route模块
const route=require("koa-route");
//引入fs模块
const fs=require("fs");
//加载user.js模块
const User=require("./user.js");
//创建koa对象
var app=new Koa();
//reg中间件:在注册页面输入账号密码,把账号数据存放数据库,然后进入登录页面
var reg=async ctx=>{	
	//获取提交数据的对象
	var u=ctx.request.body;
	//获取数据
	var username=u.username;
	var pass=u.pass;
	//保存数据
	var user=new User({
		"username":username,
		"password":pass
	});
	//存放数据库
	var us=await user.save();
	//数据存放成功打开登录页面
	if(us){
		ctx.redirect("/login1");
	}
	
}
//login1中间件:打开登录页面
var login1=ctx=>{
	ctx.type="html";
	ctx.body=fs.createReadStream("./login.html");
}
//login2中间件:获取用户输入的账号密码,在数据库里查询数据是否一致,如果一致进入成功页面,否则继续存在登录页面
var login2=async ctx=>{
	//获取提交数据的对象
	var u=ctx.request.body;
	//获取数据
	var username=u.username;
	var pass=u.pass;
	//查询数据库的数据
	var user=await User.findOne({"username":username,"password":pass});
	//判断数据
	if(user){
		ctx.redirect("/success");	//数据正确进入成功页面
	}else{
		ctx.redirect("/login1");	//数据错误继续执行登录页面
	}
}
//success中间件:进入成功页面
var success=ctx=>{
	ctx.type="html";
	ctx.body=fs.createReadStream("./success.html");
}
//获取post请求的数据
app.use(koaBody());
//加载中间件
app.use(route.post('/reg',reg));
//响应登录页面
app.use(route.get("/login1",login1));
//处理登录业务
app.use(route.post("/login2",login2));
//响应登录成功页面
app.use(route.get("/success",success));
//监听端口
app.listen(3000);

注:所有的文件都在同一目录下面,并且需要下载mongoose、koa、koa-route、koa-route、fs等模块。
安装命令:cnpm或npm i 安装的模块

发布了19 篇原创文章 · 获赞 20 · 访问量 500

猜你喜欢

转载自blog.csdn.net/Handsome_gir/article/details/105077431