小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
前言
之前我们已经介绍了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做登录验证的功能~
⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘
🏀GitHub 博客地址: github.com/Awu1227 。
🏉笔者还有其他专栏,欢迎阅读~
🏐玩转CSS之美
🎱Vue从放弃到入门
🎳深入浅出JavaScript