mongoose的简单使用

2018-01-23  本文已影响0人  十年之后_b94a

npm install mongoose 下载mongoose模块
使用之前先打开mongodb数据库
mongodb --dbpath 地址
详情请看mongodb的操作
mongodb操作
详情可以看
node.js下mongoose简单操作实例

1)mongoose在koa中使用

在项目根目录中创建config文件夹并创建mongo_config.js
此文件保存mongodb的地址及配置

//mongo_config.js
module.exports = {
    dbs : "mongodb://127.0.0.1:27017/study"
}

1-2 连接数据库

在koa项目的运行文件 app.js中
增加以下代码

const mongoose = require('mongoose');
const dbConfig = require('./config/mongo_config.js');
mongoose.connect(dbConfig.dbs,{
    useNewUrlParser : true
})

2)Schema的创建

在mongoose中那么Schema就是它的灵魂,所有对数据库的操作都是通过Schema来进行操作

在项目根目录中创建schema文件夹
例 :我们创建sdudent的Schema模型

//schema=>student.js
const mongoose = require('mongoose');
let Student = new mongoose.Schema({
    name : String, //姓名
    age : Number, //年龄
    class_code : Number  //班级编号
})
//...至于属性看项目需要什么
module.exports = mongoose.model("Student",Student);

通过上述的Schema例子我们就可以看出每一个Schema都可以看做是mysql中的每一张表,然而Schema的属性就类似每一张表里面的字段

3)运用Schema

对数据库的操作我们可以单独创建文件use_db.js

3-1 查

const student_sc = require('../schema/student.js') //导入student - schema文件
module.exports = {
  getStudent(){ //查找所有的学生
    return new Promise(async (resolve,reject)=>{
      try{
        let result = await student_sc.find({})
        resolve({
          code : 1,
          meesage : '查找成功',
          result
        })
        
      }catch(e){
        reject({
          code : -1,
          messge : e
        })
      }
      
    })
  }
}

查找指定学生

const student_sc = require('../schema/student.js') //导入student - schema文件
module.exports = {
  getOneStudent(name){ //查找指定学生,传入查找的依据参数
    return new Promise(async (resolve,reject)=>{
      try{
        let result = await student_sc.findOne({name : name})
        resolve({
          code : 1,
          meesage : '查找成功',
          result
        })
        
      }catch(e){
        reject({
          code : -1,
          messge : e
        })
      }
      
    })
  }
}

查找所有学生并且分页&按照年龄大小排序

const student_sc = require('../schema/student.js') //导入student - schema文件
module.exports = {
  getAllStudent(pageNum,pageSize){ //查找所有的学生并且分页
    return new Promise(async (resolve,reject)=>{
      try{
        let result = await student_sc.find({}).skip(pageNum*pageSize).limit(pageSize).sort({'age':-1})
        resolve({
          code : 1,
          meesage : '查找成功',
          result
        })
        
      }catch(e){
        reject({
          code : -1,
          messge : e
        })
      }
      
    })
  }
}

skip条件是分页刷选多少条数据
limit 是一页有多少容量
sort排序 -1 大到小 1:小到大
...

3-2 增

const student_sc = require('../schema/student.js') //导入student - schema文件
module.exports = {
  addStudent({name,age,classCode}){
    return new Promise(async (resolve,reject)=>{
      let newStudent = new student_sc({
        name,
        age,
        class_code:classCode
      });
      try{
        await newStudent.save();
        resolve({
          code : 1,
          meesage : '增加成功',
          result
        })
        
      }catch(e){
        reject({
          code : -1,
          messge : e
        })
      }
      
    })
  }
}

3-3 删

const student_sc = require('../schema/student.js') //导入student - schema文件
module.exports = {
  delStudent({name}){//删除的值
    return new Promise(async (resolve,reject)=>{
      try{
      let result =   await student_sc.where({name : name}).remove()
        resolve({
          code : 1,
          meesage : '删除成功',
          result
        })
        
      }catch(e){
        reject({
          code : -1,
          messge : e
        })
      }
      
    })
  }
}

3-4 改

const student_sc = require('../schema/student.js') //导入student - schema文件
module.exports = {
  updateStudent({name,newName}){//改的查找条件
    return new Promise(async (resolve,reject)=>{
      try{
      let result =  await student_sc.where({name : name}).update({name :newName })
        resolve({
          code : 1,
          meesage : '修改成功',
          result
        })
        
      }catch(e){
        reject({
          code : -1,
          messge : e
        })
      }
      
    })
  }
}
上一篇 下一篇

猜你喜欢

热点阅读