Mongoose模块
一、Mongoose
Mongoose是在node.js环境中对MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为JavaScript对象供我们使用。
1、名词解释
Schema :
它是一种以文件形式存储的数据库模型骨架,不具备对数据库操作的能力,仅仅只是数据库在程序片段中的一种表现,可以理解为表结构。
Model :
由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
Entity :
由Model创建的实体,他的操作也会影响数据库
2、Schema、Model、Entity的关系
Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。
3、命名规范(建议)
var PersonSchema; //Person的文本属性
var PersonModel; //Person的数据库模型
var PersonEntity; //Person实体
4、实现增删改查
4.1、安装插件
npm install mongoose
4.2、引用:
var mongoose = require(‘mongoose’);
4.3、创建mongoconfig.js用于连接MongoDB数据库
// 导入mongoose模块const mongoose = require('mongoose')//定义连接mogondb的字符串(链接地址)const db_url= 'mongodb://localhost:27017/mvc'//连接mongoose.connect(db_url,{useNewUrlParser:true,useUnifiedTopology:true})//连接成功mongoose.connection.on('connected',function (){console.log('MongoDB Connection open to'+db_url)
})//连接异常
mongoose.connection.on('error',function (err){console.log('MongoDB Connection Eroor:'+err)
})//断开连接mongoose.connection.on('disconnected',function (){console.log('MongoDB disconnectied')
})module.exports=mongoose
4.4、创建Shema(classes.js)
var mongoose = require('../mogoconfig')
var Schema = mongoose.Schema//定义schemavar ClassesSchema = new Schema({name:{type:String},age:{type:Number},sex:{type:String},hobby:{type:Array}
});//由Schema生成model,model具有对数据库的操作能力module.exports = mongoose.model('Classes',ClassesSchema)
4.5、创建路由文件
4.6、增删改查
(1)、增加:使用Model的实例调用save方法(使用Entity操作数据库)
var express = require('express')const ClassesModel = require('../config/model/classes')const router = express.Router()
//http://localhost:3000/mongo/add
router.get('/add',(req, res) => {let clazz = new ClassesModel({name:'郭芙',age:22,sex:'女',hobby:['武术','绘画']})clazz.save(function (err,result){if(err){res.json({code:1001,msg:'插入数据失败'})}else{res.json({code:1002,msg:'插入数据成功',data:result})}})
})
module.exports = router
(2)、删除:使用Model操作数据库
a、deleteOne:删除一条记录,返回删除的数量
b、deleteMany:删除多条记录,返回删除的数量
c、findOneAndDelete:先查找后删除,若没有找到匹配的记录不执行删除,返回null
d、findByIdAndDelete
var express = require('express')const ClassesModel = require('../config/model/classes')const router = express.Router()
//http://localhost:3000/mongo/removerouter.delete('/remove',(req, res) => {ClassesModel.deleteOne({'name':'小红'},(err,result)=>{if(err){res.json({code:1001,msg:'删除失败'})}else{res.json({code:1002,msg:'删除成功',data:result})}})})
module.exports = router
删除后"小红"后的数据库:
(3)、更新:使用Model操作数据库
a、updateOne、updateMany:返回更新的数量
b、findOneAndUpdate、findByIdAndUpdate:先查找后更新,若没有找到匹配的记录不执行删除,返回null
var express = require('express')const ClassesModel = require('../config/model/classes')const router = express.Router()
//http://localhost:3000/mongo/modify
router.put('/modify',(req, res) => {ClassesModel.updateOne({'name':'小王'},{'name':'王五','age':'28'},(err,result)=>{if(err){res.json({code:1001,msg:'更新失败'})}else{res.json({code:1002,msg:'更新成功',data:result})}})
})
module.exports = router
更新后数据:
(4)、查询:使用Model操作数据库
a、find():查询所有
b、findOne({}):按条件查询
c、findById():按id查询
var express = require('express')const ClassesModel = require('../config/model/classes')const router = express.Router()
//http://localhost:3000/mongo/findAll
router.get('/findAll',(req, res) => {ClassesModel.find(function(err,result){if(err){console.log(err)res.send({code:1001,msg:'查询失败'})}else{res.send({code:1002,msg:'查询成功',data:result})}})
})
module.exports = router
Mongoose模块相关推荐
- nodeJs利用mongoose模块操作数据
1. 下载安装好MongoDB,在根磁盘下(例,d盘)新建文件夹data,然后在里面新建db文件夹,在mongodb安装目录的bin文件夹下运行命令mongod --dbpath d:\data\db ...
- 使用mongoose模块向本地mongodb数据库中插入数据报错“Operation `people.insertOne()` buffering timed out after 10000ms“
异常 连接本地的mongodb数据库报错: MongooseError: Operation `people.insertOne()` buffering timed out after 10000m ...
- mongoose 实用 API 总结
2019独角兽企业重金招聘Python工程师标准>>> 一.介绍 1. 概述 mongoose 模块用于简化 node 与数据库 mongodb 之间的操作,目的是通过简便的 API ...
- Nodejs+Express学习二(Mongoose基础了解)
学习Node注定少不了与数据库打交道,而MongoDB和Node可以说是绝配,这篇主要是简单介绍Mongoose这个模块. 由于本人也是边学边写的这篇文章,绝对会有新手的味道,请大神看到这里就表往下看 ...
- Mongo基础使用,以及在Express项目中使用Mongoose
MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...
- 基于Express+mongoose搭建的学生管理系统(2017-08-07)
上一周学了下mongoose,虽然学了点皮毛,但还是想写写总结总结,这也是我的第一篇技术博客.还是蛮开心的,happy~~来,切入正题!项目源码我会放在github上. github 地址 代码目录 ...
- 应用Mongoose开发MongoDB(2)模型(models)
数据模型及基础操作模板 为了使工程结构清晰,将数据模型(Schema, Model)的建立与增删查改的基础操作模板写在一起,命名为数据库设计中的Collection(对应于关系型数据库中的表定义)名, ...
- 【node】------mongoose的基本使用------【巷子】
1.安装mongoose npm install mongoose 2.启动数据库 mongod --dbpath d:\data\db 3.引入mongoose模块并连接数据库 const mong ...
- mongoose Topology was destroyed 处理
在用 node 的 mongoose 模块操作 mongodb 数据库的时候,本来正常返回数据,但是有时候会返回空白页,控制台里报错: Topology was destroyed 数据库连接代码如下 ...
最新文章
- python实现数据库查询_通过Python实现mysql查询数据库实例
- 5月3日 条件语句、循环语句的复习练习
- mysql的源码目录_Mysql DBA系统学习(2)了解mysql的源码目录及源文件
- 如何用10万资金炒房到1000万
- mongo快速翻页方法(转载)
- CI(持续集成)/CD(持续部署)
- ABBYY FineReader 12扫描对页的步骤有哪些
- 动态创建 Lambda 表达式
- 英文期刊论文翻译格式要求和文献要求
- MATLAB画圆时却显示椭圆?一个命令解决问题!
- XMPP tigase 8.0 与 strophe.js 测试Web聊天服务/即时通信
- Permute 3.6.5 小巧便捷的多媒体文件格式转换器
- unity 给图片边缘_Unity 截图选择框,中间全透明,边缘半透明
- HDMI中的视频时序分析
- 软考嵌入式系统设计师2012年上午试题总结
- calibre +obok插件,解决从kobo上买的电子书的DRM问题
- linux 帝国cms 刷新,帝国cms怎么自动刷新网站首页?(帝国CMS自动刷新首页的方法)...
- 很「佛系」的商用本 — ThinkPad S2 2020 长测
- 【放苹果】m个苹果放到n个盘子中
- 【脚本】自动统计B站up主投稿视频时长