gistfile1.txt 使用koa2框架,基于注册登录功能简单的介绍了mongodb的使用一、首先我们先看下目录结构 目录结构 1、在mongo目录下有个app.js文件(入口文件) 2、然后views是模板文件目录 3、p
使用koa2框架,基于注册登录功能简单的介绍了mongodb的使用
一、首先我们先看下目录结构
目录结构
1、在mongo目录下有个app.js文件(入口文件)
2、然后views是模板文件目录
3、package.json 这个就不必多说了大家都了解
二、在node中使用mongodb,首先要先安装好nodejs和mongodb,window下启动mongodb可能会遇到一些问题,可以参考:启动mongodb遇到的一些问题三、然后安装各种必须的依赖,下面是app.js的代码,注释已经详细(因为是练习,所以都放在一个文件下),全部代码参考github:代码,
//使用koa2
const Koa = require('koa');
//路径处理
var path = require('path');
//接收请求的数据处理
const bodyParser = require('koa-bodyparser');
//路由处理
const Router = require('koa-router');
//加载模板
var views = require('koa-views')
//使用之后就可以直接使用了
const app = new Koa();
const router = new Router();
//配置mongodb数据库相关的内容
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mongo');
//创建模型
var User = mongoose.model('User',{username:String,password:String});
// 配置服务端模板渲染引擎中间件 使用ejs模板
app.use(views(path.join(__dirname, './views'), {
map: { html:'ejs' }
}))
//数据处理模块
app.use(bodyParser())
//首页
router.get('/',async (ctx,next)=>{
ctx.body = 'hello'
})
// '/login' get请求去到login页面
router.get('/login',async (ctx,next)=>{
await ctx.render('login')
})
//注册页
router.get('/register',async (ctx,next)=>{
await ctx.render('register')
})
//注册传过来的数据
router.post('/register',async (ctx,next)=>{
const{username,password} = ctx.request.body
//添加数据
if(!username || password){
ctx.body = {
code:1,
msg:'用户名或者密码不能为空'
}
}
var user = new User({ username: username, password:password });
await user.save(function(err, res) {
// 如果错误,打印错误信息
if (err){
ctx.body = {
code:1,
msg:'err'
}
}
ctx.body = {
code:2,
msg:'ok'
}
})
})
//数据查询
router.post('/login',async (ctx,next)=>{
const{username,password} = ctx.request.body
await User.
find({ username: username }).
where('password').equals(password).
exec((err,res)=>{
if(err){
console.log(err);
}else{
if(res){
ctx.body = {
code:2,
data:{
username:res[0].username
},
msg:'ok'
}
}else{
ctx.body = {
code:1,
msg:'err'
}
}
}
});
})
//要使用router.routes() 路由才会有效果
app.use(router.routes())
app.listen(3000)
博客地址:http://yxlblog.com
