Express框架入门(四)mongoose 入门以及 mongoose 实现数据 的增、删、改、查、默认参数 、模块化

阅读 74

2022-02-12

mongoose 入门以及 mongoose 实现数据 的增、删、改、查

一、mongoose 介绍

Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose 是 NodeJS 的驱动,不能作为其他语言的驱动。

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

二、mongoose 的安装以及使用

官网:https://mongoosejs.com/

1. 安装

npm i 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、创建数据模型

定义好了 Schema,接下就是生成 Model。model 是由 schema 生成的模型,可以对数据库的 操作。

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

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

如果传入 2 个参数的话:这个模型会和模型名称相同的复数的数据库建立连接:如通过下面 方法创建模型,那么这个模型将会操作 users 这个集合。

如果传入 3 个参数的话:模型默认操作第三个参数定义的集合名称

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

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();

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); 
	}) 
});

10、案例

//1.引入mongoose

const mongoose = require('mongoose');


//2、建立连接  
mongoose.connect('mongodb://127.0.0.1:27017/eggcms');



//3、操作users表(集合)   定义一个Schema   Schema里面的对象和数据库表里面的字段需要一一对应

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



//4、定义数据库模型  操作数据库

// model里面的第一个参数 要注意:1首字母大写  2、要和数据库表(集合 )名称对应  这个模型会和模型名称相同的复数的数据库表建立连接

// var User=mongoose.model('User',UserSchema);    // 默认会操作 users表(集合)

var User = mongoose.model('User', UserSchema, 'user');  //默认会操作第三个参数配置的表  user表(集合)

//5、查询users表的数据

// User.find({}, (err, doc) => {
//   if (err) {
//     console.log(err)
//     return
//   }
//   console.log(doc)
// })



//6、增加数据
// 6.1实例化 Model     通过实例化User Molde 创建增加的数据
//6.2 实例.save()
// const user = new User({
//   username: 'zhaoliu',
//   age: 16,
//   status: 1
// })
// user.save((err, doc) => {
//   if (err) {
//     console.log(err)
//     return
//   }
//   console.log(doc)
// })

//7、修改数据
// User.updateOne({ username: 'zhaoliu' }, { username: '赵柳' }, (err, doc) => {
//   if (err) {
//     console.log(err)
//     return
//   }
//   console.log(doc)
// })

//8、删除数据
User.deleteOne({ age: 20 }, (err, result) => {
  if (err) {
    console.log(err)
    return
  }
  console.log(result)
})

三、mongoose默认参数

// mongoose 默认参数:增加数据的时候,如果不传入数据会使用默认配置的数据
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('数据库连接成功')
});

// 定义数据表(集合的)映射  注意:字段名称必须和数据库保持一致
var UserSchema=mongoose.Schema({
    name:String,
    age:Number,
    status:{
        type:Number,
        default:1   
    }
})

//定义model操作数据库 
var UserModel=mongoose.model("User",UserSchema,'user');

//数据的查找
// UserModel.find({},function(err,doc){
//     if(err){
//         console.log(err);
//         return;
//     }
//     console.log(doc);
// })



//数据的增加
// var user=new UserModel({
//     name:'张三88888888888888',
//     age:40,
//     status:1,
//     sex:"男"
// })

// user.save(function(err){
//     if(err){
//         console.log(err);
//         return;
//     }
//     console.log('增加数据成功')
// });


var user=new UserModel({
    name:'张三6666666666666666',
    age:30    
})

user.save(function(err){
    if(err){
        console.log(err);
        return;
    }
    console.log('增加数据成功')
});

四、mongoose模块化

在这里插入图片描述
在上面的基础上进行模块化封装
在model下创建db.js和user.js

db.js

//连接数据库
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;

user.js

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');

app.js

var UserModel=require('./model/user.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);
    })
})

精彩评论(0)

0 0 举报