koa猫鼬实现简单增删改查接口的示例代码
配合上一篇文章的联系人应用(www . https://。JB 51。net/article/161160。htm),实现配套的基于开发的后台增删改查接口
1.所需工具
node.js mongoDB2 .主要结节模块
科威特石油公司(https://科威特石油公司。bootscs。com,一个开发的开发框架),mongose(https://mongosejs。com,mongDB操作工具)
3.目录结构
4.启动MongoDB
首先在MongoDB安装盘的根目录下(这里假设是D盘)新建一个文件夹数据,然后在MongoDB的容器中打开终端,输入mongod-DBpath d : \数据,这样MongoDB的数据存放地点就配置好了。
然后双击容器中的mongo.exe,mongoDB就启动完成了。
5.app.js
app.js为入口文件,功能是连接数据库,导入文件,引入寇阿相思树组件,最后启动服务。
使用"严格";const fs=require(' fs ');const path=require(' path ');const mongose=require(' mongose ');const db=' MongoDB :///localhost/test ';/* 连接数据库*/猫鼬。承诺=要求('蓝鸟');蒙哥斯。connect(db,{ usemongoclients : true });/** * 获取数据库表对应的射流研究…对象所在的路径* @ type {[type]} */const models _ path=path。join(_ _ dirname ',/app/models ');/** * 已递归的形式,读取模型文件夹下的射流研究…模型文件,并需要* @ param {[type]}模型路径[description]* @ return {[type]}[description]*/let walk=function(模型路径){ fs。readdirsync(模型路径).forEach(函数(文件){让文件路径=路径。联接(模型路径,'/'文件)让stat=fs.statSync(文件路径)if (stat.isFile()) { if (/(.*)\.(js |咖啡)/.test(file)){ require(filePath)} } else if(stat。is directority()){ walk(filePath)} })};行走(models _ path);require(' babel-register ');const Koa=require(' Koa ');const logger=require(' KOA-logger ');const session=require(' KOA-session ');const body解析器=require(' KOA-body解析器');const app=new Koa();app。use(logger());app。use(session(app));app。使用(BodyParser());/** * 使用路由转发请求* @ type {[type]} */const router=require(' ./config/router ')();app。使用(路由器。routes());app。使用(路由器。allowedmethods());app。听(3000);console.log('应用程序在端口3000启动.');6.路由配置
路由配置在config/router.js中进行。
const Router=require(' KOA-Router ');常量用户=要求('./app/控制器/用户');模块。exports=function(){ let Router=new Router({ prefix : '/API ' });router.post('/test/user/users ',user。用户);router.post('/test/user/user ',user。用户);router.post('/test/user/add ',user。add user);router.post('/test/user/delete ',用户。删除用户);返回路由器};邮政方法第一参数为路由地址,第二参数为路由地址对应的方法。
7.表结构定义
表结构定义在app/models/user.js中。
让猫鼬=require('猫鼬');让架构=猫鼬。图式;//定义表结构让用户架构=新架构({ name : { type : String,required: true },sex: String,area: String,always: Boolean,relationship: Array,mobile: String,phone: String,desc: String,id : String });//参数用户数据库中的集合名称,不存在会创建。让用户=猫鼬。模型(‘用户’,用户模式);模块。导出=用户;8.工具方法
一些增删改查的工具方法放在app/dbhelp/userHelp.js中
使用"严格";让猫鼬=require('猫鼬');让用户=猫鼬。模型(‘用户’);/* 查找用户*/出口。findalusers=async()={ let query=user。find();让RES=[];wait query.exec(函数(err,users){ if(err){ RES=[];} else { res=用户;} });返回RES };/* 查找特定用户*/出口。findfilterUSers=async(params)={ let NameReG=new RegExp(params。姓名,‘我’);让查询=用户。find({ name : { $ regex : NameReG } });让RES=[];wait query.exec(函数(err,users){ if(err){ RES=[]} else { RES=users;} });返回RES };/* 查找单个用户*/出口。find user=async(params)={ let query=user。查找({ id : params。id });让RES={ };wait query.exec(函数(err,tUser) { if (err) { res='没有该用户;} else { RES=Tuser[0];} });返回RES };/* 新增用户*/出口。addUSer=async(user)={ user=wait user。save();返回用户};/* 编辑用户*/出口。updateuser=async(用户)={ user=wait user。更新({ id :用户。id },{ $set: { name: user.name,sex: user.sex,area: user.area,always: user.always,relationship : user。关系,电话:用户。电话,手机:用户。手机,desc :用户。desc });返回用户};/* 删除用户*/出口。删除用户=async({ id })={ let flag=false;console.log('标志==========='标志);wait User.remove({id},function(err){ if(err){ flag=false } else { flag=true } });控制台。log(' flag=======await====' ' flag);返回标志};9.路由配置中对应的方法
路由配置中对应的方法在app/controller/user.js中。
使用"严格";让XSS=要求(' XSS ');让猫鼬=require('猫鼬');让用户=猫鼬。模型(‘用户’);让uuid=require(' uuid ');从导入用户帮助程序./dbhelper/userHelper.js'/*多用户*/exports.users=async (ctx,next)={ let data;如果(CTX。请求。body){ data=wait user helper。findfilterusers(CTX。请求。body)} else { data=wait user helper。CTX。body={ success : true,data } }/*单用户*/exports.user=async (ctx,next)={ 0让数据=等待用户助手。查找用户(CTX。请求。身体)CTX。body={ success : true,data } }/*添加(更新)用户*/exports.addUser=async (ctx,next)={让NewObj=CTX。请求。body,user2let id=NewObj。id | | uuid。v4();让用户=新用户({ name: newObj.name,sex: newObj.sex,area: newObj.area,always: newObj.always,relationship : newobj。relationship,phone: newObj.phone,mobile: newObj.mobile,desc: newObj.desc,id: idif(NewObj。id){用户2=等待UserHelper。updateUser(用户);} else { user 2=wait USer helper。添加用户(用户);} if(用户2){ CTX。body={ success : true,data: user2 } } }/*删除用户*/exports.deleteUser=async (ctx,next)={ let id=XSS(CTX。请求。尸体。id);让数据=等待UserHelper。删除用户({ id });ctx.body={ success: true,data } }总结:
其实没有什么花头,无非都是美国石油学会(美国石油协会)的使用,这里比较多用异步非同步(异步)与等待实现异步操作,阮老师的文章里有异步非同步(异步)的一切,http://E6。阮一峰。com/#docs/async。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:koa猫鼬实现简单增删改查接口的示例代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。