:pig_nose: node中使用MongoDB的实例

依赖于mongoose模块进行一系列的增删改查操作

  • 1. 连接数据库

    主要使用到connect函数,函数中还有一系列对应的操作可以参加官方文档进行配置

    https://mongoosejs.com/docs/connections.html

    :warning:一开始我一直报错

    是由于我要连接的是test1数据库,但是我用账号不是这个数据库的的所有者所以认证失败了

    { MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoError: Authentication failed.]

    var mongoose=require('mongoose')
    
    mongoose.connect("mongodb://localhost:27017/admin",{useNewUrlParser:true,user:"zpliu",pass:"mysql"},function(err){
        if(err){
            return console.log(err)
        }else{
            console.log("数据库连接成功")
        }
    })
  • 2. 设计集合的表结构

    使用monoose中Schema实例对象进行集合结构的定义

    var Schema=mongoose.Schema //schema用于设计集合结构
    
    var studentSchema=new Schema( //设计集合结构
    {
        username:{
            type:String,
            required:true //要求必须要有名字
        },
        password:{
            type:String,
            require:true
        },
        email:{
            type:String
        }
    })
  • 3.封装成对应集合对象

    使用model函数将上一步设计好的集合结构进行封装成对应的集合对象,得到集合对象之后就可以对集合对象中的数据进行操作

    :warning:在model函数中第一个参数是设置集合的名字的通常有默认的操作

    参数以大写字母开头,model函数会将对应的参数改成小写字母开头并且以复数结尾

    Student ------>>>>> students

    var Student=mongoose.model("Student",studentSchema)
  • 4.往集合对象中添加文档数据

    利用上一步module中建立好的集合对象之后,使用new方法定义集合中新的文档对象,文档对象中的内容需要按照之前Schema中定义好的表的结构进行定义

    //创建文档实例
    var student1=new Student({ 
        username:"zpliu",
        password:"123456",
        email:"1944532210@qq.com"
    })
  • 5.文档对象的保存

    使用回调函数监视数据是否插入成功

    当文档插入成功之后,对应声明的集合也就产生在数据库中了

    /*将文档数据进行存储*/
    student1.save(function(err,data){
        if(err){
            return console.log("数据库插入失败")
        }
        console.log("数据库插入成功") //data中保留了插入的数据
    })
  • 6.查询操作

    借助model中封装好的集合对象,定义sql查询语句,调用find或者findOne函数进行查询操作

    不知道是不是,每次都得使用Schema去定义好集合结构再去进行查询操作

    https://mongoosejs.com/docs/api/query.html

    var query=Student.where({username:"zpliu"})
    query.find(function (err,data) {
        if(err){
            console.log(err)
        }else{
            console.log(data)
        }
        // body...
    })
  • 7.删除操作

    删除操作与查询操作不一样,贪婪的将符合条件的文档进行删除;而查询操作只会将查询到的其中一条给输出

    /*
    MongoDB删除数据
     */
    Student.remove({username:"zpliu"},function(err){
        if(err){
            console.log("删除失败")
        }else{
            console.log("删除成功");
        }
    })
  • 8.更新操作

    同样的使用集合对象的where函数构造查询语句,调用update方法只更新一个,而updateMany方法则是更新所有符合的文档;函数中传入需要更新的字段内容 **{$set{字段:更新的内容}}

    var query=Student.where({username: "zpliu"})
    query.updateMany({$set:{password:"654321"}},function(err){
        if(err){
            console.log(err)
        }else{
            console.log("更新成功")
        }
    })

代码进行模块化

:sa:1.数据库配置信息

:heavy_multiplication_x: 2.定义数据库集合对象

:bullettrain_front: 3.操作对应的集合

现在students变量就代表了数据库中students集合,然后查询MongoDB官方文档进行增删改查就可以了

结合数据库进行实例操作

  • 1.数据库的查询操作

    这里由于Mongodb数据库中文档的id信息由于分布式存储的原因,不太方便辨别;在数据展示时可以使用art-template模板中的 $index+1进行id信息的展示

    1. 数据库的配置信息文件

    2. 所有数据库集合collection结构化的文件

    3. 针对student封装好的增删改查的业务函数

  • 封装好的插入函数

  • 查询所有数据

  • 查询单个数据

  • 更新数据

  • 删除数据

Last updated

Was this helpful?