基于koa的mongoose(mongodb、robo 3T、mongoose)、redis使用

mongdb

概念

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

安装

mongdb
点击上面链接打开进入下载对应系统的安装包,具体安装流程链接已详细说明,这里不作讲述。注意安装完成后,一定要去创建数据目录

运行

如何检查是否安装成功?
可以在命令行工具下输入which mongod,如果出现下图的地址则表明安装成功,注意windows自带的cmd是不支持该命令的,你可以使用git bash 或者其他的命令行工具去检测。
在这里插入图片描述
在命令行工具中输入mongod指令,即可运行mongodb的服务器,它会占用你的27017的端口
在这里插入图片描述
如果它报一下的提示
在这里插入图片描述
则需要你手动加入你的数据目录

mongod --dbpath D:\MongoDB\data\db <=(你的数据目录)

RoBo 3T(可视化数据库管理工具)

安装

RoBo 3T
这里直接上连接自行下载安装即可,它就是一个mongodb的可视化管理工具。

连接数据库

打开这个软件后,它会提示你连接本地的27017端口,所以在启动这个软件前,要先把mongodb的服务器启动先。
在这里插入图片描述

mongoose

概念理解

Mongoose的一切都始于模式(Schema)。每个schema映射到MongoDB的集合(collection)和定义该集合(collection)中的文档的形式。

模式(Schema): 可以理解为它是描述你的数据表,在数据库建表的时候需要决定有什么字段及它的字段格式等,而在mongoose中,它不需要你手动的创建表,只需用代码去描述这个模型即可。

模型(models):由Schema生成的里面具备一个抽象的行为(增、删、改、查)

实例(collection):相当于数据库中的数据表,mongodb中则为collection。通过collection对数据库进行读写操作。

安装

使用npm或者yarn等包管理工具安装,这里默认大家已经安装好koa及其相关的依赖,如果还不懂的可以看我的另外一篇文章。

npm i mongoose

安装的等待过程,我们在项目的目录下创建dbs的文件夹用来创建数据库的相关文件。
在dbs目录下创建config.js用于声明数据库的配置选项。
在js中写入下面配置代码

连接

module.exports =  {
    dbs:'mongodb://127.0.0.1:27017/dbs' //在数据库中创建dbs的数据库,键值中的dbs为字段。
}

在dbs目录中再创建一个models目录,存放schema。
在这里插入图片描述
现在来写一个简单的schema,在models新建一个person.js

const mongoose = require('mongoose');//引入monoogse


//建立Schema模型
let personSchema = new mongoose.Schema({
    name: String,
    sex:  Boolean
})

// 导出
module.exports =  mongoose.model('Person',personSchema)  
//Person为表名

一般你定义的表名mongoose会根据schema生成的集合名称采用的是schema名称的复数形式。

比如我们定义了Person,那么创建后 实际它会生成一个people的表,这里要注意一下。

接下来我们在app.js进行对数据库的链接
首先引入mongoose再引入配置文件再进行链接

const mongoose = require('mongoose')
const dbConfig = require('./dbs/config')

// 引入
mongoose.connect(dbConfig.dbs,{ //dbs就是在配置文件中定义的键值
  useNewUrlParser:true
})

再从新运行数据就会连接上了。

操作(增删改查)

打开路由中的其中一个模块文件
在这里插入图片描述
注意路由中的文件一定记得在app.js中进行引入

//app.js
const index = require('./routes/index')
const users = require('./routes/users')

app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())

我们在users.js中引入刚刚写的模型

const Person = require('../dbs/models/person')

增删改查

//向数据写入数据
router.post('/addPerson',async function(ctx){
  const person = new Person({ //新增Person的实例
    name: ctx.request.body.name,
    age:ctx.request.body.age
  })
  let code 
  try {
    await person.save()
    code =0
  } catch(e) {
    code =-1
  }
  ctx.body = {
    code: code
  }
})
//读取数据
router.post('/getPerson',async function(ctx){
  const result = await Person.findOne({name:ctx.request.body.name});//模型直接操作
  const results = await Person.find({name:ctx.request.body.name});
  ctx.body = {
    code:0,
    result,
    results
  }
})
//更新数据
router.post('/updatePerson',async function(ctx){
  const result = await Person.where({
    name:ctx.request.body.name
  }).update({
    age:ctx.request.body.age
  })
  ctx.body = {
    code:0
  }
})

//删除数据  
router.post('/removePerson',async function(ctx){
  const result = await Person.where({
    name:ctx.request.body.name
  }).remove()
  ctx.body = {
    code:0
  }
})

完成上面的写入后 我们可以使用postman或者其他工具进行post的请求,注意users.js中是否有前缀设置prefix有则要把前缀加上。
当你执行完addPerson的请求后,可以在Robo 3T中找到你刚刚新增数据了。
在这里插入图片描述
最后给大家贴身mongoose的中文文档,文档的翻译有一定的滞后性,如果想看最新版本的文件建议还是看官网的(英文)。
mongoose中文文档
mongoose官方文档

redis

概念

它是一个快速读写的、高性能key-value的数据库
特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

详细的介绍在它的官方文档有说明,这里就不再详细叙述了。

安装

redis
点击上面链接,按照官方给的步骤一步一步的安装及配置它的环境变量,非常的简单。

启动服务(运行)

命令行工具运行以下代码即可,注意,这里一定要先配置好环境变量才行,如果没有配置环境变量则需要进入到安装好的目录下执行。

redis-server

在这里插入图片描述
出现上面这样的语句表示启动成功。

连接redis(koa-redis、koa-generic-session)

使用包管理工具安装在项目目录下执行下面代码进行安装

npm i koa-redis koa-koa-generic-session

koa-generic-session(操作session)
koa-redis(连接redis)

安装好后,我们在app.js中引入并使用这两个中间件

const session = require('koa-generic-session')
const Redis = require('koa-redis')

app.keys=['keykeykeyk','keys']  //session做加密处理的随便填入一些字符即可
app.use(session({ 
  key:'mt', // 存储字段名称
  prefix:'mtpr', //前缀
  store:new Redis()  // 不加session默认存储在内存
}))

当你访问接口的时候就会存储到你的cookie里面了,mt就是上面key中定义的
在这里插入图片描述

操作

新建一个命令行工具输入下面指令启动客户端程序

redis-cli

在这里插入图片描述
我们输入keys *(有关更多的指令可以查看官方文档)查看已有的值

在这里插入图片描述

这里我们看到值中的前4个字符是mtpr就是上面app.js中设置好的prefix前缀
一个key值代表一个用户,如果想要查看key值中的内容可以用get指令
在这里插入图片描述
我们在项目的middleware目录下创建自己的一个中间件,里面设置好每请求一次接口,session的count+1,然后我们在浏览器打开http://localhost:3000/,在回到上面的控制台get一次刚刚的key会发现它的count的对应的增加。
在这里插入图片描述
上面的例子我们是通过操作session写入到redis里面,但是我们也是可以直接操作redis的,看下面例子

users.js
const router = require('koa-router')()
const Redis = require('koa-redis') // 引入redis中间件
const Person = require('../dbs/models/person')

const Store = new Redis().client //新建redis的客户端

router.prefix('/users')

router.get('/fix', async function(ctx){
  const st = await Store.hset('fix','name',Math.random()) //name为key,后面的参数为值
  ctx.body={
    code:0
  }
})

接下来我们在浏览器输入localhost:3000/users/fix,看到页面返回code:0,然后我们回到上面的命令行工具验证是否已经写入成功,输入hget fix key(键值),可以看到他返回了刚刚我们存储的值。
在这里插入图片描述

相关连接汇总

koa2+koa-router以及koa脚手架的使用(koa-generator)
mongdb
RoBo 3T
mongoose中文文档
mongoose官方文档
redis
redis指令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值