前言
之前我们已经介绍了MongoDB的安装,这篇文章就来聊聊在实际项目中MongoDB如何结合Koa实现登录验证的功能, 我们会实现在MongoDB数据库中存储userName
和userPwd
,然后用户登录输入账号和密码,会在数据库中查找是否用账号和密码,从而做到登录验证的功能。
一、MongoDB中插入文档
打开Robo 3T
客户端,新建数据库Awu-manager
,创建集合users
然后插入文档:
{ userName: "admin", userPwd: "admin" } 复制代码
二、开启一个koa2的服务
如果第一次使用koa,需要安装
koa-generator
yarn global add koa-generator koa2 manager-server yarn install yarn dev 复制代码
到此你就成功启动了一个koa2的项目了,地址栏输入http://localhost:3000/ ,就可以访问到啦
三、如何连接MongoDB?
我们需要在根目录下,创建config文件夹,分别创建配置文件和数据库连接文件。
/config/index.js /** * 配置文件 */ module.exports = { URL: 'mongodb://127.0.0.1:27017/Awu-manager' } 复制代码
/config/db.js /** * 数据库连接 */ const mongoose = require('mongoose') const config = require('./index') const log4js = require('./../utils/log4j') // 通过mongooose连接数据库 mongoose.connect(config.URL,{ useNewUrlParser: true, useUnifiedTopology: true }) // 监听数据库是否连接成功 const db = mongoose.connection db.on('error', () => { log4js.error('****数据库连接失败****') }) db.on('open', () => { log4js.info('****数据库连接成功****') }) 复制代码
到此我们就成功连接数据库了,我这里的日志监控利用log4js实现的,感兴趣的朋友可自行查阅资料,后续我也会将log4js的用法更新到博客中
koa2默认没有安装mongoose,我们需要手动安装。
yarn global mongoose -S 复制代码
关于mongoose的基本使用大家可参考mongoose官方文档
四、如何在MongoDB中查数据?
定义模型
我们需要定义一个数据库的模型层,在根目录下新建models文件夹,创建userSchema.js文件,需要和数据库数据对应起来
const mongoose = require('mongoose') const userSchema = mongoose.Schema({ "userId": Number, // 用户ID,自增长 "userName": String, // 用户名称 "userPwd": String, // 用户密码 "userEmail": String, // 用户邮箱 "mobile": String, // 手机号 "sex": Number, // 性别 0:男 1:女 "deptId": [], // 部门 "jobs": String, // 岗位 "state": { type: Number, default: 1 }, // 1: 在职 2:离职 3:试用期 "role": { type: Number, default: 1 }, // 用户角色 0:系统管理员 1:普通用户 "roleList" : [], // 系统角色 "createTime": { type: Date, default: Date.now() }, // 创建时间 "lastLoginTime": { type: Date, default: Date.now() }, // 更新时间 remark: String // 使用remark字段方便拓展 }) // 导出定义模型,注意第三个参数要和数据库中的集合相对应。 module.exports = mongoose.model("users",userSchema,"users") 复制代码
查询部分核心代码
const router = require('koa-router')() const User = require('./../models/userSchema') // util是封装过的工具函数 const util = require('./../utils/util') // 添加请求前缀 router.prefix('/users') router.post('/login', async (ctx) => { try { const { userName, userPwd } = ctx.request.body // 在模型中查询 const res = await User.findOne({ userName, userPwd }) if (res) { ctx.body = util.success(res) } else { ctx.body = util.fail("账号或密码不正确") } } catch (error) { ctx.body = util.fail(error.msg) } }) module.exports = router 复制代码
我们来测试一下
测试数据1:账号:admin 密码:aaaaa
测试数据2:账号:admin 密码:admin
通过日志打印我们可以看到成功实现了用户登录验证的功能,前端我们对响应进行拦截,通过判断状态码即可完成页面跳转的功能。
最后
⚽这篇文章主要介绍Koa2结合MongoDB做登录验证的功能~
⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘