Mongoose和Redis安装以及使用

1 篇文章 0 订阅
0 篇文章 0 订阅

一、MongoDB入门 

安装Mongoose
1. brew tap mongodb/brew
2. brew install mongodb-community
3. brew services start mongodb-community
4. 检查是否安装成功:which mongod
5. 启动项目:mongod
6. 这里mac系统可能会因为系统升级存在创建相关文件夹失败的错误的问题。这里只需先关闭SIP保护,在进行创建即可。


7. 这里建议配合数据库工具去查看我们与数据库交互情况,[Robo 3T](https://user-gold-cdn.xitu.io/2019/12/5/16ed3b8d16b52c86)
8. 安装npm i mongoose
9. 创建dbs文件夹,在内创件config.js来保存我们数据库地址。以及models文件夹,里面就是我们需要存储的信息
10. 在app.js引入mongoose和数据库地址,进行连接。
11. 接口中做创建实例  
 

    # npm in mongoose
    # mkdir dbs
    # mkdir dbs/models 
    # touch dbs/models/person.js
    # touch dbs/config.js

  使用Mongoose增删改查
    config.js=》数据库地址

 module.exports = {
     dbs: 'mongodb://127.0.0.1:27017/dbs'
 }

person.js

 # 先声明Schema,在数据库中声明一个表,创建模型,在模型中建实例
    const mongoose = require('mongoose')
    const personSchema =new mongoose.Schema({
        name:String,
        age:Number
    })
    module.exports=mongoose.model('Perosn',personSchema)

app.js

 # 引入mongoose和数据库地址,进行连接
    const mongoose = require('mongoose')
    const dbConfig = require('./dbs/config')
    mongoose.connect(dbConfig.dbs, {
      useNewUrlParser: true
    })

routes/users.js

const router = require('koa-router')()
// 引入模型
const Person = require('../dbs/models/person')
router.prefix('/users')

router.get('/', function (ctx, next) {
  ctx.body = 'this is a users response!'
})

router.get('/bar', function (ctx, next) {
  ctx.body = 'this is a users/bar response'
})
// 新增
router.post('/addPerson', async function (ctx) {
  const person = new Person({
    name: ctx.request.body.name,
    age: ctx.request.body.age
  })

  let code;
  try {
    await person.save()
    code = 0;
  } catch {
    code = -1;
  }
  ctx.body = {
    code: code
  }
})
// 删除
router.post('/removePerson', async function (ctx) {
  let resa = await Person.where({
    name: ctx.request.body.name
  }).remove()
  let code;
  try {
    code = 0;
  } catch (error) {
    code = -1;
  }
  ctx.body = {
    code: code
  }
})
// 修改更新
router.post('/updatPerson', async function (ctx) {
  await Person.where({
    name: ctx.request.body.name
  }).update({
    age: ctx.request.body.age
  })
  ctx.body = {
    code: 0
  }
})
// 查询
router.post('/findPerson', async function (ctx) {
  let resonlv1 = await Person.findOne({
    name: ctx.request.body.name
  })
  let resonlv2 = await Person.find({
    name: ctx.request.body.name
  })
  ctx.body = {
    code: 0,
    resonlv1,
    resonlv2
  }
})

module.exports = router

终端启动请求接口

 # curl=》发起请求;-d =》post请求
    # 新增
    curl -d "name=youzi&age=18" http://localhost:3000/users/addPerson
    # 删除
    curl -d "name=youzi" http://localhost:3000/users/removePerson
    # 更新修改
    curl -d "name=youzi" http://localhost:3000/users/updatPerson
    # 查新
    curl -d "name=youzi" http://localhost:3000/users/findPerson

二、Redis基础 

 session和cookie的关系?
    说起我们平时工作中常开发的登陆功能,服务端的程序是如何识别客户端的状态呢?HTTP是无状态的,用户访问了我们服务端的程序,怎么保证下次访问的时候还是这个用户呢?服务端的session又是如何保持在客户端呢?
    
redis安装和使用?
1. Mac下使用brew install redis
2. 使用redis-server启动即可
3. 进入项目,在项目内安装2个中间件(koa-redis、koa-generic-session)
redis配合session使用?
1. app.js引入2个中间件,进行开发

 const session = require('koa-generic-session')
    const Redis = require('koa-redis')
    app.keys = ['keys', 'keyskyes']; //对session进行加密,这里是值自己定哦
    app.use(session({
        store:new Redis()
       //不写配置项内容存进内存,这里我们存到redis中
    }))

2. koa-pv.js中间件

  # 这里记录pv数加加。将session和当前用户访问进行关联
    # 将session的值存在cookie中,区分不同的用户身份
    function pv(ctx) {
        ctx.session.count++
        global.console.log('pv' + ctx.path)
    }
    module.exports = function () {
        return async function (ctx, next) {
            pv(ctx)
            await next()
        }
    }


3. 此时刷新页面查看。cookie中已经有我们刚存进去的值了koa开头的就是我们储存进去的内容,这里koa开头的key值我们是可以去修改的。通过key和前缀prefix设置即可,用法如下

    app.use(session({

      key: 'mt',
    
      prefix: 'mtpr',
    
      store: new Redis()
    
    }))

session存储的是什么?如何查看和读取当前储存值的是什么?
1. ctx对象下会创建一个session对象,我们直接读写ctx.session即可
2. 查看数据库中的值可通过redis-cli启动客户端程序,keys * 命令可查看当前所有key值,get获取我们想要的值。


直接操作操作redis,怎么操作?
1. 这里举例是创建一个接口。
2. 首先引入koa-redis;
3. 创建一个redis客户端
4. 接口中写入

  const Redis = require('koa-redis')
    const Store = new Redis().client;
    router.get('/fix', async function (ctx) {
      const st = await Store.hset('fix', 'nanme', Math.random())
      ctx.body = {
        code: 0
      }
    })
    # 直接请求即可。因为是get,哈哈哈哈
    # url http://localhost:3000/users/fix
    # 去redis中查询就能看到我们刚才创建的值啦

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值