当前位置: 首页 > 后端技术 > Node.js

Mongoose和Redis的安装和使用

时间:2023-04-03 17:59:21 Node.js

一、MongoDB入门安装Mongoosebrewtapmongodb/brewbrewinstallmongodb-communitybrewservicesstartmongodb-community查看是否安装成功:whichmongodstartupproject:mongod这里的mac系统可能相关到创建系统升级文件夹失败的错误问题。这里只需要先关闭SIP保护,再创建即可。这里推荐配合数据库工具来查看我们与数据库的交互情况。Robo3T安装npmimongoose创建dbs文件夹,创建内部文件config.js保存我们的数据库地址。还有models文件夹,就是我们需要存放的信息。在app.js中导入mongoose和数据库地址进行连接。在界面中创建实例#npminmongoose#mkdirdbs#mkdirdbs/models#touchdbs/models/person.js#touchdbs/config.js使用Mongoose增删改查config.js=》数据库addressmodule.exports={dbs:'mongodb://127.0.0.1:27017/dbs'}person.js="首先声明Schema,声明数据库中的表,创建模型,在模型中创建实例constmongoose=require('mongoose')constpersonSchema=newmongoose.Schema({name:String,age:Number})module.exports=mongoose.model('Perosn',personSchema)app.js=>引入mongoose和数据库地址,连接constmongoose=require('mongoose')constdbConfig=require('./dbs/config')mongoose.connect(dbConfig.dbs,{useNewUrlParser:true})routes/users.jsconstrouter=require('koa-router')()//importmodelconstPerson=require('../dbs/models/person')router.prefix('/users')router.get('/',function(ctx,next){ctx.body='thisisausersresponse!'})router.get('/bar',function(ctx,next){ctx.body='thisisausers/barresponse'})//添加路由器.post('/addPerson',asyncfunction(ctx){constperson=newPerson({name:ctx.request.body.name,age:ctx.request.body.age})让代码;尝试{awaitperson.save()code=0;}赶上{代码=-1;}ctx.body={code:code}})//删除router.post('/removePerson',asyncfunction(ctx){letresa=awaitPerson.where({name:ctx.request.body.name}).remove()letcode;try{code=0;}catch(error){code=-1;}ctx.body={code:code}})//修改更新router.post('/updatPerson',asyncfunction(ctx){awaitPerson.where({name:ctx.request.body.name}).update({age:ctx.request.body.age})ctx.body={code:0}})//查询router.post('/findPerson',asyncfunction(ctx){letresonlv1=awaitPerson.findOne({name:ctx.request.body.name})letresonlv2=awaitPerson.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#deletecurl-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/findPerson2.Redis基本session和cookie的关系?说到我们日常工作中经常开发的登录功能,服务器端程序是如何识别客户端状态的呢?HTTP是无状态的。如果一个用户访问我们服务器上的程序,我们如何保证该用户下次访问时还是同一个用户呢?服务器上的session如何留在客户端?redis的安装和使用?Mac上使用brewinstallredis启动带有redis-server的项目,在项目中安装2个中间件(koa-redis、koa-generic-session)并使用rediswithsession?app.js引入了2个用于开发的中间件constsession=require('koa-generic-session')constRedis=require('koa-redis')app.keys=['keys','keyskyes'];//加密session,这里是你决定的值中间件#在这里记录pv数,将session与当前用户访问关联起来#将session值存储在cookie中,以区分不同的用户身份functionpv(ctx){ctx.session.count++global.console.log('pv'+ctx.path)}module.exports=function(){returnasyncfunction(ctx,next){pv(ctx)awaitnext()}}刷新页面查看.cookie已经具有我们刚刚保存的值。koa开头的值就是我们存储的内容。我们可以修改koa开头的key值。它可以通过键和前缀来设置。用法如下app.use(session({key:'mt',prefix:'mtpr',store:newRedis()}))session存储什么?如何查看和读取当前存储的值?将在ctx对象下创建一个会话对象。我们可以直接读写ctx.session来查看数据库中的值。可以通过redis-cli启动客户端程序。keys*命令可以查看当前所有的键值,并得到我们想要的值。.直接操作redis怎么操作?这里的例子是创建一个接口。首先介绍一下koa-redis;创建一个redis客户端接口并写入constRedis=require('koa-redis')constStore=newRedis().client;router.get('/fix',asyncfunction(ctx){constst=awaitStore.hset('fix','nanme',Math.random())ctx.body={code:0}})#直接请求即可。因为是get,哈哈哈哈#urlhttp://localhost:3000/users/fix#去redis中查询可以看到我们刚刚创建的值