MongoDB学习day07--mongoose入门,数据库增删改查,默认参数,模块化

一、mongoose介绍

Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。 Mongoose

NodeJS 的驱动, 不能作为其他语言的驱动。 

Mongoose 有两个特点:

1、 通过关系型数据库的思想来设计非关系型数据库
2、 基于 mongodb
驱动, 简化操作

二、mongoose的安装以及使用

1.安装

npm/cnpm mongoose --save

2.引入mongoose并连接数据库

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
如果有账户密码需要采用下面的连接方式:
mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms'); 

3.定义Schema

数据库中的 Schema, 为数据库对象的集合。 schema mongoose 里会用到的一种数据模式,
可以理解为表结构的定义; 每个 schema 会映射到 mongodb 中的一个 collection, 它不具备
操作数据库的能力

var UserSchema=mongoose.Schema({
name: String,
age:Number,
status:'number'
})

4.创建数据模型

model 是由 schema 生成的模型, 可以对数据库的操作。 

注意: mongoose.model 里面可以传入两个参数也可以传入三个参数 

mongoose.model(参数 1:模型名称(首字母大写) , 参数 2:Schema

传两个参数,默认会和模型名称相同的复数的集合建立连接,例如模型名称为"User",则会默认操作users这个集合

var User=mongoose.model('User', UserSchema);

mongoose.model(参数 1:模型名称(首字母大写) , 参数 2:Schema, 参数 3:数据库集合名称) 

传三个参数,会和第三个参数的集合建立连接,操作第三个参数的集合

var User=mongoose.model('User', UserSchema,'users');
5.查找数据

User.find({},function(err,docs){
  if(err){
    console.log(err);
    return;
  }
  console.log(docs); })

6.增加数据

var u=new User({ //实例化模型 传入增加的数据
  name:'lisi2222333',
  age:20,
  status:true
})
u.save(function(err,docs){
  if(err){
    console.log(err);
    return;
  }
  console.log(docs); })

7.修改数据

User.updateOne({ name: 'lisi2222' }, { name: '哈哈哈' }, function(err, res) {
  if(err){
    console.log(err);
    return;
  }
  console.log(
'成功') });

8.删除数据

User.deleteOne({ _id: '5b72ada84e284f0acc8d318a' }, function (err) {
  if (err) {
    console.log(err);
    return;
  } 
  // deleted at most one tank document   console.log('成功'); });

9.保存成功查找

var u=new User({
  name:'lisi2222333',
  age:20,
  status:true //类型转换
})
u.save(function(err,docs){
  if(err){
    console.log(err);
    return;
  } 
  //console.log(docs);   User.find({},function(err,docs){   if(err){     console.log(err);     return;   }
  console.log(docs);   }) });

三、默认参数

在定义schema时,设置默认参数

var UserSchema=mongoose.Schema({
    name:String,
    age:Number,
    status:{
        type:Number,
        default:1   //默认为1
    }
})

四、模块化

1.先创建数据库连接模块moongoose

//连接数据库

var mongoose=require('mongoose');

//useNewUrlParser这个属性会在url里识别验证用户所需的db,未升级前是不需要指定的,升级到一定要指定。

mongoose.connect('mongodb://127.0.0.1:27017/eggcms',{ useNewUrlParser: true },function(err){
        if(err){

            console.log(err);
            return;
        }
        console.log('数据库连接成功')
});

module.exports=mongoose; //输出mongoose

2.创建user模块

var mongoose=require('./db.js');


var UserSchema=mongoose.Schema({
    name:String,
    age:Number,
    status:{
        type:Number,
        default:1   
    }
})



module.exports=mongoose.model('User',UserSchema,'user');

3.创建news模块

var mongoose=require('./db.js');


var NewsSchema=mongoose.Schema({
    title:"string",
    author:String,
    pic:String,
    content:String,
    status:{

        type:Number,
        default:1

    }
})


module.exports=mongoose.model('News',NewsSchema,'news');

4.使用模块

var UserModel=require('./model/user.js');

var NewsModel=require('./model/news.js');

var user=new UserModel({

    name:"李四666",
    age:40
})

user.save(function(err){
    if(err){

        console.log(err);
        return;
    }
    //获取user表的数据

    UserModel.find({},function(err,docs){
        if(err){
    
            console.log(err);
            return;
        }
        console.log(docs);
    })
})
// NewsModel.find({},function(err,docs){

//     if(err){

//         console.log(err);
//         return;
//     }
//     console.log(docs);
// })

五、模块性能

多个模块,不会多次连接数据库,只会在引入第一个模块时连接数据库

可以通过以下代码测试

console.time('user');

var UserModel=require('./model/user.js');

console.timeEnd('user');

console.time('news');
var NewsModel=require('./model/news.js');

console.timeEnd('news');

结果是:第一次时间大于第二次

猜你喜欢

转载自www.cnblogs.com/xc-chejj/p/10915007.html