一、封装的版本
npm install mongoose --save 二、目录结构 |-- database //操作数据的文件夹 |-- connect.js //连接mongo数据库的文件 |-- studentModel.js //操作student的数据操作 |--routes //路由文件夹 |-- student.js //student的相关路由 |-- user.js //user的相关路由 app.js //程序的入口文件 package.json //项目依赖的配置信息 三、示例代码 database/connect.js (mongoDB的连接文件— 指定连接的数据库) var mongoose = require("mongoose"); mongoose.connect("mongodb://localhost:27017/travel") .then(() => { console.log("数据库连接成功!") }) .catch((err) => { console.log("数据库连接失败!", err) }) module.exports = mongoose; database/studentModel( 指定要操作的集合) 每个集合,建立对应的Model文件 注:mongoose 在操作mongodb时会自己给model的集合名加个s // 约定数据表字段格式 对象(汽车) 对象的实例(玛莎拉蒂) // 定义操作数据表的对象模型 var mongoose = require("./connect"); var Schema = mongoose.Schema //表结构对象 var stuSchema = new Schema({ //约定具体的数据表实例,只有表结构中约定好的字段,才能成功录入 name:String, age:Number, address:String }) var stuModel = mongoose.model('student',stuSchema) //定义一个操作对应表的,模型对象 module.exports = stuModel routes/student.js(在路由文件处理时,操作mongoDb) var express = require('express'); var studentModel = require("./../database/studentModel"); var router = express.Router(); /* GET users listing. */ router.get('/list',async function(req, res, next) { try{ let {name,address,current,pageSize} = req.query; //获取传过来的name let obj = {}; if(name){ obj.name = new RegExp(name);//进行模糊查询 } if(address){ obj.address = new RegExp(address);//进行模糊查询 } // 查询对应页的数据 let skip = (current-1)*pageSize; //从哪一条数据 开始取 let result =await studentModel.find(obj).skip(skip).limit(pageSize); let total = await studentModel.find(obj).countDocuments(); console.log("total",total); res.send({code:0,data:result,message:"成功",count:total}); }catch(err){ console.log(err); // res.send({code:500,message:"服务器出错",detailMsg:err}); } }); router.get('/del', async function(req, res, next) { try{ let {_id} = req.query; console.log(_id); let result = await studentModel.deleteOne({"_id":_id}); if(result.deletedCount>0){ res.send({code:0,message:"删除成功"}); }else{ res.send({code:1,message:"删除失败"}); } }catch(err){ console.log(err); // res.send({code:500,message:"服务器出错",detailMsg:err}); } }); //添加 router.post('/add',async function(req, res, next) { try{ //1. 接收客户端传的数据 let {name,age,address} = req.body; let result = await studentModel.insertMany([{name,age,address}]); console.log(req.body); if(result.length>0){ res.send({code:0,message:"添加成功"}); }else{ res.send({code:1,message:"添加失败"}); } }catch(err){ res.send({code:500,message:"服务器出错",detailMsg:err}); } }); //根据id查找对应的数据 router.get('/getById',async function(req, res, next) { try{ //1. 接收客户端传的数据 let {id} = req.query; let result = await studentModel.findOne({"_id":id}); console.log(req.query); console.log(result); res.send({code:0,message:"成功",data:result}); }catch(err){ console.log(err); res.send({code:500,message:"服务器出错",detailMsg:err}); } }); //根据id,更新数据 router.post('/update',async function(req, res, next) { try{ //1. 接收客户端传的数据 let {id,name,age,address} = req.body; let result = await studentModel.updateOne({"_id":id},{$set: {name,age,address}}); console.log(req.query); console.log(result); if(result.modifiedCount>0){ res.send({code:0,message:"修改成功"}); }else{ res.send({code:0,message:"修改失败"}); } }catch(err){ console.log(err); res.send({code:500,message:"服务器出错",detailMsg:err}); } }); module.exports = router; 注: mongoose提供的操作集合的方法和mongoDb本身操作集合的方法有些区别。 |
|
|