配合上一篇文章的联系人应用(https://www.jb51.net/article/161160.htm),实现配套的基于nodejs的后台增删改查接口
-
<李> node . js李>
<李> mongoDB李>
高雅(https://koa.bootcss.com,一个nodejs的开发框架),猫鼬(https://mongoosejs.com, mongDB操作工具)
首先在MongoDB安装盘的根目录下(这里假设是D盘)新建一个文件夹数据,然后在MongoDB的本中打开终端,输入mongod——DBpath D: \数据,这样MongoDB的数据存放地点就配置好了。
然后双击本中的mongo.exe, mongoDB就启动完成了。
app.js为入口文件,功能是连接数据库,导入文件,引入亚组件,最后启动服务。
使用严格的; const fs=要求(fs); const path=要求(“路径”); const猫鼬=要求(“猫鼬”); const db=癿ongodb://localhost/测试”;/*连接数据库*/猫鼬。承诺=要求(“蓝鸟”); 猫鼬。连接(db, {useMongoClient:真});/* * *获取数据库表对应的js对象所在的路径 * @type{[型]} */const models_path=路径。加入(__dirname/app/模型);/* * *已递归的形式,读取模型文件夹下的js模型文件,并要求 * @param{[型]}modelPath[描述] * @return{[型]}[描述] */让走=函数(modelPath) { fs.readdirSync (modelPath)。forEach(函数(文件){ 让filePath=路径。加入(modelPath,‘/?文件) 让统计=fs.statSync (filePath) 如果(stat.isFile ()) { 如果(/(. *)\。(js |咖啡)/test(文件)){ 要求(filePath) } } else if (stat.isDirectory ()) { 步行(filePath) } }) }; 走(models_path); 要求(“babel-register”); const高雅=要求(“高雅”); const记录器=要求(“koa-logger”); const会话=要求(“koa-session”); const bodyParser=要求(“koa-bodyparser”); const应用=new高雅(); app.use (logger ()); app.use(会话(app)); app.use (bodyParser ());/* * *使用路由转发请求 * @type{[型]} */const路由器=要求(“。/config/路由器”)(); app.use (router.routes ()); app.use (router.allowedMethods ()); app.listen (3000); 控制台。日志(“应用始于3000端口…”);
路由配置在config/router.js中进行。
const路由器=要求(“koa-router”); const用户=要求(“. ./app/controllers/用户”); 模块。出口=function () { 让路由器=new路由器({ 前缀:“/api” }); 路由器。邮报》(“/测试/用户/用户”,User.users); 路由器。邮报》(“/测试/用户/用户”,User.user); 路由器。帖子(/测试/user/添加,User.addUser); 路由器。邮报》(“/测试/user/删除”,User.deleteUser); 返回路由器 }; >之前发布方法第一参数为路由地址,第二参数为路由地址对应的方法只
表结构定义在app/模型/user.js中。
让猫鼬=要求(“猫鼬”); 让模式=mongoose.Schema;//定义表结构 让UserSchema=新模式({ 名称:{ 类型:字符串, 要求:真正的 }, 性:字符串, 面积:字符串, 总是:布尔, 关系:数组, 手机:字符串, 电话:字符串, 描述:字符串, id:字符串 });//参数用户数据库中的集合名称,不存在会创建。 让用户=猫鼬。模型(“用户”,UserSchema); 模块。出口=用户; >之前
一些增删改查的工具方法放在app/dbhelp userHelp.js中
使用严格的; 让猫鼬=要求(“猫鼬”); 让用户=mongoose.model(“用户”);/*查找用户*/出口。findAllUsers=异步()=比;{ 让查询=User.find (); 让res=[]; 等待查询。exec(函数(呃,用户){ 如果(err) { res=[]; 其他}{ res=用户; } }); 返回res };/*查找特定用户*/出口。findFilterUsers=异步(params)=比;{ 让nameReg=new RegExp (params.name,“我”); 让查询=User.find ({ 名称:{ regex:美元nameReg } }); 让res=[]; 等待查询。exec(函数(呃,用户){ 如果(err) { res=[] 其他}{ res=用户; } }); 返回res };/*查找单个用户*/出口。findUser=异步(params)=比;{ 让查询=User.find ({ id: id }); 让res={}; 等待查询。exec(函数(呃,摘要){ 如果(err) { res='没有该用户”; 其他}{ res=摘要[0]; } }); 返回res };/*新增用户*/出口。addUser=异步(用户)=比;{ 用户=等待user.save (); 返回用户 };/*编辑用户*/出口。updateUser=异步(用户)=比;{ 用户=等待用户。更新({id:用户。id}, { 美元:{ 名称:user.name, 性:user.sex, 面积:user.area, 总是:user.always, 关系:user.relationship, 电话:user.phone, 移动:user.mobile, 描述:user.desc } }); 返回用户 };/*删除用户*/exports.deleteUser=异步({id})=比;{ 让国旗=false; console.log('标志==========祝辞的+标志); 等待用户。删除({id},函数(err) { 如果(err) { 国旗=false 其他}{ 国旗=true } }); console.log('标志=====等待=====祝辞的+标志); 返回国旗高雅+猫鼬实现简单增删改查接口的示例代码