之前我们都是通过shell来完成对数据库的各种操作的,在开发中大部分时候我们都需要通过程序来完成对数据库的操作。
而Mongoose就是一个让我们可以通过Node来操作MongoDB的模块。
Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。
在大多数情况下,它被用来把结构化的模块应用到一个MongoDB集合,并提供了验证和类型转换等好处。
·可以为文档创建一个模式结构(Schema),用人话说就是约束
·可以对模型中的对象/文档进行验证
·数据可以通过类型转换转换为对象模型
·可以使用中间件来应用业务逻辑挂钩
·比Node原生的MongoDB验证更容易
·mongoose中为我们提供了几个新的对象
——Schema(模式对象)
·Schema对象定义约束了数据库中的文档结构
——Model
·Model对象作为集合中的所有文档的表示,相当于MongoDB数据库中的集合collection
——Document
·Document表示集合中的具体文档,相当于集合中的一个具体的文档
注意:这几个对象的创建是由顺序的,首先要由Schema,然后才有Model,最后再有Document。
首先,我们打开WebStorm新建一个文件夹01.mongoose
然后在该文件夹中新建Package.json文件,文件信息为:
{ "name": "workspace", "version": "1.0.0"}
然后再新建一个Java Script文件,文件名为helloMongo.js。接着我们下载第三方包:mongoose。在terminal中输入指令:
cd 01.mongoose
如果你没有下载npm,点击这里有下载npm的指导,特别详细。
然后再teermial中继续输入指令:
npm i mongoose --save
如果有下方的报错信息,那么打开管理员的cmd,进入你的项目,也就是01.mongoose下,输入npm i mongoose --save
npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Program
Files\nodejs\node_cache_cacache\tmp\aa399929 npm ERR! errno -4048 npm
ERR! Error: EPERM: operation not permitted, open ‘C:\Program
Files\nodejs\node_cache_cacache\tmp\aa399929’ npm ERR!
[OperationalError: EPERM: operation not permitted, open ‘C:\Program
Files\nodejs\node_cache_cacache\tmp\aa399929’] { npm ERR! cause:
[Error: EPERM: operation not permitted, open ‘C:\Program
Files\nodejs\node_cache_cacache\tmp\aa399929’] { npm ERR! errno:
-4048, npm ERR! code: ‘EPERM’, npm ERR! syscall: ‘open’, npm ERR! path: ‘C:\Program
Files\nodejs\node_cache\_cacache\tmp\aa399929’ npm ERR! }, npm
ERR! isOperational: true, npm ERR! errno: -4048, npm ERR! code:
‘EPERM’, npm ERR! syscall: ‘open’, npm ERR! path: ‘C:\Program
Files\nodejs\node_cache\_cacache\tmp\aa399929’ npm ERR! } npm
ERR! npm ERR! The operation was rejected by your operating system. npm
ERR! It’s possible that the file was already in use (by a text editor
or antivirus), npm ERR! or that you lack permissions to access it. npm
ERR! npm ERR! If you believe this might be a permissions issue, please
double-check the npm ERR! permissions of the file and its containing
directories, or try running npm ERR! the command again as
root/Administrator.
如图所示:
使用语句
var mongoose = require('mongoose');//引入mongoose
打开mongodb,然后打开mongoose的网页,mongoose的更新还是蛮快的,用法可能会存在偏差,走过路过学习的小伙伴看一下这个网址哦(内有玄机,教你学会mongoose)
找到最前面类似这一块的东西,就是它的用法了。(这个先看,先不要打,测试的代码后边有,咱先不急)
const mongoose = require('mongoose');//connect方法的第一个参数即使协议://数据库的ip地址:端口号/数据库名称//如果端口号是默认端口号27017,其实也可以省略不写,其他的都必须写mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});const Cat = mongoose.model('Cat', { name: String });const kitty = new Cat({ name: 'Zildjian' });kitty.save().then(() => console.log('meow'));
上边如果有修改端口号的话需要把27017改一下,如果要使用的数据库不是test的话,也得把test改成你要操作的数据库哦。
——监听MongoDB数据库的连接状态
当连接MongoDB后,在mongoose对象中会有一个属性connection,该属性表示的就是数据库的连接
通过监视该对象的状态,可以监听数据库的连接与断开。使用代码:
//数据库连接成功事件mongoose.connection.once("open", function(){});//数据库断开成功事件mongoose.connection.once("close", function(){});
断开连接使用代码(一般不用):
mongoose.disconnect()
注意:MongoDB数据库,一般情况下,只需要连接一次,连接一次后,除非项目停止服务器关闭,否则连接一般不会断开。
ok,现在我们给出测试的代码:
//引入const mongoose = require('mongoose');//连接数据库,127.0.0.1就是他的IP地址(前面那个是输入域名),而mongoose_test存不存在无所谓mongoose.connect('mongodb://127.0.0.1/mongoose_test', {useNewUrlParser: true, useUnifiedTopology: true});//数据库连接成功提示mongoose.connection.once("open", function () { console.log("数据库连接成功");});//断开数据库连接mongoose.disconnect();
运行结果如下:
联系客服