koa2项目连接mongdb数据库

2023-11-30 21:12

本文主要是介绍koa2项目连接mongdb数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.数据库连接 

npm i mongoose

config/index.js中:

module.exports = {URL: "mongodb://127.0.0.1:27017/vue-admin"
}

config/db.js:注意移入文件路径问题

const mongoose = require("mongoose") 
const logger = require("../utils/log4js");
const dbConfig = require("./index");//连接数据库
mongoose.connect(dbConfig.URL);const db = mongoose.connection// db.on('open', () => {
//     logger.info("*****数据库状态为开启******")
//   })// 连接成功
db.on("connected", function () {logger.info("**********数据库连接成功***********");
})
// 连接失败
db.on("error", function (err) {logger.info("数据库连接失败,原因:" + err);
})
// 连接断开
db.on('disconnectied', function () {logger.info("数据库连接断开,原因:" + err);
})

app.js中引入db.js文件即可连接到数据库

// 引入数据库配置
require('./config/db')

2.mongoose连接使用

1.编写schema:字段名有无引号都行

const mongoose = require('mongoose');
const Schema = mongoose.Schema;const usersSchema = new Schema({// _id : 605d8f81e1ed264a867cfcc2,// 数组可以直接使用[],也可以使用Array"deptId" : [],"state" : Number,"role" : Number,"roleList" : [],"createTime" : { type: Date, default: Date.now },"lastLoginTime" : { type: Date, default: Date.now },"userId" : Number,"userName" : String,"userPwd" : String,"userEmail" : String,"job" : String,"mobile" : String,// 留一个备用的字段"remark": String});//   要把 schema 转换为一个 Model, 使用 mongoose.model(modelName, schema) 函数:
const users = mongoose.model('users', usersSchema);module.exports = users;

2.使用Model和mongoose

注意:查询语句形式;返回数据不能直接返回,需要返回res._doc否则会报错

const router = require('koa-router')()
const comm = require("../utils/common");
const logger = require("../utils/log4js");
const jwt = require("../utils/token");
const md5 = require("md5");
const User = require("../model/userSchema");router.prefix('/users')router.post('/login', async (ctx, next) => {let { userName, userPwd } = ctx.request.body;if(userName == '' || userPwd == '') return comm.error(comm.CODE.PARAM_ERROR,{},'用户名和密码不能为空' );// 查询数据库用户名是否存在,通过md5对用户密码进行md5()加密和和数据库进行查询try {// 后面是要查询的字段let loginUser = await User.findOne({ userName,  userPwd: md5(userPwd)}, 'userId userName userEmail job mobile deptId state role roleList')console.log(loginUser._doc,"loginUser");if(loginUser){//报错: TypeError: Converting circular structure to JSON,starting at object with constructor 'MongoClient'// 解决: mongoose不能直接返回loginUser,需要返回res._doc// 设置token: 使用用户名和密码设置token const data = loginUser._doc;let token = jwt.setToken({userName, userPwd});data.token = "Bearer " + tokenctx.body = comm.success(comm.CODE.SUCCESS, data, '登录成功')logger.info(userName+"登录成功");}} catch (error) {ctx.body = comm.error(comm.CODE.BUSINESS_ERROR,{}, error)logger.error(userName+"尝试登录失败:"+error);}
})module.exports = router

这篇关于koa2项目连接mongdb数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/438570

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.