|
一、封装的版本
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本身操作集合的方法有些区别。 |
|
|