美文网首页
nodejs使用mongoose对mongodb进行增删查改基础

nodejs使用mongoose对mongodb进行增删查改基础

作者: 来了啊小老弟 | 来源:发表于2020-02-19 17:46 被阅读0次

    首先要介绍一下Mongodb的一些基本操作

     show dbs //查看数据库
     use test //使用当前数据库,新建数据库,test为数据库名称
    // 增
     db.test.insert({name:'wangjn',age:'20'}) //插入   
     db.test.insertOne({name:'haha'}) 
     db.test.insertMany([{name:'123'},{name:'222'}])
    
    
    // 查 
    // $lt 小于
    // $lte 小于等于
    // $gt 大于
    // $gte 大于等于
    // $ne 不等于
    db.test.find() //查询所有文档     
    db.test.find({age:{$lt:16}}) //年龄小于16的数据
    db.test.find({name:'234'}) //查找名字为234的文档
    db.test.find({name:'234',age:19}) // 多条件
    or条件
    db.col.find({$or: [{key1: value1}, {key2:value2}]})
    // 删除
    db.test.remove({age:{$lt:16}}) //删除年龄小于16的文档,也就是记录行
    db.test.drop() //删除集合,就是表
    
    //修改
    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
     )
    // query : update的查询条件,类似sql update查询内where后面的。
    // update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    // upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    // multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    // writeConcern :可选,抛出异常的级别。
    
    // 只更新第一条记录:
    
     db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
    // 全部更新:
    
     db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
    // 只添加第一条:
    
     db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
    // 全部添加进去:
    
     db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
    // 全部更新:
    
     db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
    // 只更新第一条记录:
    
    // db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
    

    以上是mongodb的一些基本操作,使用mongoose之后一些操作的指令可能会发生变化,详情请见mongoose的官方文档
    http://www.mongoosejs.net/docs/api.html

    在这里直接附上mongoose的基本增删查改操作,路由和交互啥的没放上去,只起借鉴作用,完整的代码在最下面附上了git。

    var express = require('express')
    var app = express();
    const uuidv1 = require('uuid/v1');
    const cors = require("cors");
    const crypto = require("crypto"); //node自带的密码加密
    // const { get } = require("axios").default; //利用axois发送个网络请求
    app.use(cors()); //就这一步就已经解决了跨域
    var connection = require('../mongodb');
    const {User} = require('../models/user.js');
    module.exports = {
      list:app.get('/userList', (req,res)=>{
        var start = (req.query.pageNum-1)*req.query.pageSize
        var end = req.query.pageNum*req.query.pageSize
        new Promise(function(resolve, reject){
          User.find({username:{$regex:req.query.name,$options:'i'}}, function(err, result){
            if(err){
              console.log('[search ERROR] - ',err);
              return;
            }
            console.log(result.length)
            resolve(result.length)
          })
        }).then((data)=>{
          User.find({username:{$regex:req.query.name,$options:'i'}}, function(err, result){
            if(err){
              console.log('[search ERROR] - ',err);
              return;
            }
            res.json({
              code:'0',
              data:result,
              total:data,
              msg:''
            });
          }).limit(Number(req.query.pageSize)).skip(start)
        })
        
      }),
      detail:app.get('/userList/:id', (req,res)=>{
        User.findOne({_id:req.params.id}, function(error, results){
          if (error) throw error;   
          console.log(req.params)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
          res.json({
            code:'0',
            data:results,
            msg:''
          });
        })  
      }),
      create:app.post('/userList', (req,res)=>{
        User.findOne({username:req.body.username}, function(error, results){
          if (error) throw error;
          if(results){
            res.json({
              code:'10010',
              data:[],
              msg:'用户名已存在'
            });
            return;
          } else {
            let md5 = crypto.createHash("md5");
            let newPas = md5.update(req.body.password).digest("hex");
             User.create({
              username:req.body.username,
              userage:req.body.userage,
              password:newPas
            },function(err, result){
              if(err){
                console.log('[INSERT ERROR] - ',err.message);
                return;
              }        
              res.json({
                code:'0',
                data:'',
                msg:'成功'
              });
            })
          }
        })
      }),
      edit:app.put('/userList', (req,res)=>{
        User.findByIdAndUpdate(
          {
            _id: req.body._id
          },{
            username:req.body.username,
            userage:req.body.userage,
            password:req.body.password
          }, function(error, results){
            if(error){
              console.log('[UPDATE ERROR] - ',error);
              return;
            }        
            console.log('--------------------------UPDATE----------------------------');
            console.log('UPDATE affectedRows',results);
            res.json({
              code:'0',
              data:'',
              msg:'成功'
            });
        })
        
      }),
      delete:app.delete('/userList', (req,res)=>{
        User.deleteOne({_id:[req.body[0]]}, function(error, results){
          if (error) throw error;   
          console.log(results)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
          res.json({
            code:'0',
            data:'',
            msg:'成功'
          });
        })  
      }),
      login:app.post('/user/login', (req,res)=>{
        // const {username, password} = req.body;
        let username = req.body.username;
        let password = req.body.password;
        
        let md5 = crypto.createHash("md5");
        let newPas = md5.update(password).digest("hex");
        console.log(username,newPas)
        const user = User.findOne({username:username},function(err,result){
          if(err){
            console.log(err);
            return;
          }
          if(!result){
            res.json({
              code:'10020',
              data:[],
              msg:'用户不存在'
            });
            return;
          }
          if(result.password !== newPas){
            res.json({
              code:'10030',
              data:[],
              msg:'密码错误'
            });
            return;
          } else if(result.password === newPas){
            res.json({
              code:'0',
              data:[],
              msg:'成功'
            });
            return;
          } else {
            res.json({
              code:'999',
              data:[],
              msg:'未知错误'
            });
            return;
          }
        })
      }),
    }
    

    源码小demo附上https://github.com/wangjianan05/nodejsUseMongodb.git

    相关文章

      网友评论

          本文标题:nodejs使用mongoose对mongodb进行增删查改基础

          本文链接:https://www.haomeiwen.com/subject/pvoafhtx.html