手机版

节点使用Mongoose类库实现简单的添加、删除和修改

时间:2021-08-28 来源:互联网 编辑:宝哥软件园 浏览:

Mongoose是nodejs环境下MongoDB数据库操作的封装,是一个可以将数据库中的数据转换成javascript对象供我们使用的对象模型工具。

猫鼬装置

npm安装猫鼬成功安装后,我们可以使用require('猫鼬')。

以下是指向本地数据库mongoosedb的链接,代码如下:

var mongose=required(' mongose ');var DB _ URL=' MongoDB ://localhost :27017/dataDb ';/* link */mongous . connect(DB _ URL);/*链接成功*/mongose . connection . on(' connected ',function(){ console . log(' mongose connection open to ' db _ URL ');});//链接异常mongose . connection . on(' error ',function(err){ console . log(' mongose connection error : ' err);});//link disconnected mongose . connection . on(' disconnected ',function(){ console . log(' mongose connection disconnected ');});如下图所示

从上面的代码中,监视了几个事件,连接的事件由执行触发,这表明连接成功。

2.图式概论

它是以文件形式存储的数据库模型骨架,不具备操作数据库的能力。它只是程序片段中数据库的一种表示,可以理解为一种表结构。

那么如何定义一个模式呢?请参见以下代码:

var mongose=required(' mongose ');var测试架构=new mongoose . schema({ name : { type : string },//属性名称,类型为stringage3360 { type3360number,default:30},//属性年龄,类型为number,默认值为30time3360 {type:date,default3360 '当前时间' });如上所述,在我们的测试模式中,每个键都将被转换成由文件中相关的SchemaType定义的属性。允许的模式类型如下:

字符串数字日期缓冲区布尔混合objectid数组如果我们需要在如上所述编写之后添加额外的键,我们可以在Schema中使用add方法。

3.创建模型

我们已经定义了上面的Schema,我们需要将我们的TestSchema转换成一个我们可以使用的模型,它具有操作数据库的能力。我们可以用猫鼬。模型(模型名称、模式);

首先,组合模式并创建一个模型,简单地看一下演示,如下所示:

var mongose=required(' mongose ');//schema定义vartestschema=new mongoose . schema({ name : { type : string },age: {type3360string},sex : { type : string } });//创建模型var test model=mongose . model(' test 1 ',test schema);//初始化数据vartestint=new testmodel({ name : ' kong zhi ',age:' 30 ',sex 3360 ' girl ' });console . log(TestInt . name);//kongzhuconsole . log(Testint . age);//30 con sole . log(TeStint . sex);//姑娘,我们简单的用上面定义的内容做一个简单的数据库的增加、删除、修改的操作。

1.使用以下代码在项目的根目录下创建一个新的db.js:

var mongose=required(' mongose ');var DB _ URL=' MongoDB ://localhost :27017/dataDb ';/* link */mongous . connect(DB _ URL);/*链接成功*/mongose . connection . on(' connected ',function(){ console . log(' mongose connection open to ' db _ URL ');});//链接异常mongose . connection . on(' error ',function(err){ console . log(' mongose connection error : ' err);});//link disconnected mongose . connection . on(' disconnected ',function(){ console . log(' mongose connection disconnected ');});module.exports=mongoose2.下面我们创建一个名为user.js的新用户Schema,它具有以下属性和代码:

/*定义用户的模式*/var mongose=require('。/db . js ');var Schema=猫鼬。图式;Var用户架构=新架构({ Username : {Type: String},//用户名密码3360 { type : String },//密码年龄3360 {Type: Number},//年龄});/* model是schema生成的模型,具有操作数据库*/module . exports=mongous . model(' user ',user schema)的能力;3.数据库操作,我们创建一个名为app.js的新文件

3.1插入数据(Model.save([fn]),代码如下:

var User=require('。/user . js ');//insert data varuser=new user({ username : ' kongzhi 0707 ',password 3360' 123456 ',age : 30 });user.save(function(err,RES){ if(err){ console . log(err);} else { console . log(RES);}});然后在命令行上运行app.js,可以看到如下内容:

然后我们检查本地数据库中的数据,我们可以看到一条新的数据,如下图所示

从数据库可以看出,数据的插入是成功的;

3.2更新数据(模型。更新(条件、文档、[选项]、[回调])

条件:更新的条件,它是一个对象。Doc:需要更新的内容,这个值也是一个对象。Options:可选参数,具有以下属性:safe: (boolean) safe模式(默认值为架构中设置的值(true)) upsert: (boolean)如果没有匹配项,是否创建文档(false) multi :(boolean)是否更新多个文档(false) runValidators:如果为true,则对此命令运行update validator。更新验证器根据模型的模式验证更新操作。严格:(布尔值)覆盖严格此更新选项覆盖:(布尔值)禁用仅更新模式,允许您覆盖文档(false)回调:回调函数

以下代码执行更新:

var User=require('。/user . js ');//更新数据函数update() {//更新数据的条件查询varrousr={ ' username ' : ' kongzhi 0707 ' };//执行更新数据varupdatestr={ ' password ' : ' abcdef ' };User.update(wherestr,updatestr,function(err,RES){ if(err){ console . log(err);} else { console . log(RES);} });}//调用update函数update();运行app.js后,如下图所示:

继续检查数据库,可以看到密码字段已经更新,如下图所示:

3.3 findByIdAndUpdate(id、[更新]、[选项]、[回调]);

根据id更新;该id是数据库中自动生成的ID;下面的代码,

var User=require('。/user . js ');//更新数据函数update() {//更新数据var id=' 5b3a 4941 ca 11752732 fee 772 '的条件查询;//执行更新数据varupdatestr={ ' password ' : ' vvvv ' };User.findByIdAndUpdate(id,updatestr,function(err,RES){ if(err){ console . log(err);} else { console . log(RES);} });}//调用update函数update();下图显示了如下数据库:

3.4删除型号。移除(条件,[回调])

代码如下:

var User=require('。/user . js ');函数del() {//删除数据的条件var where restr={ ' username ' : ' kongzhi 0707 ' };User.remove(wherestr,function(err,RES){ if(err){ console . log(err);} else { console . log(RES);} });}//调用函数del();查看数据库中的数据,可以看到没有这样的数据;

3.5查询model.find(条件、【字段】、【选项】、【回调】);

如以下代码所示:

var User=require('。/user . js ');函数find() {//删除数据的条件var where restr={ ' username ' : ' long en 0707 ' };User.find(wherestr,function(err,RES){ if(err){ console . log(err);} else { console . log(RES);} });}//调用函数find();执行后如下:

3.6数量查询模型.计数(条件,[回调])

var User=require('。/user . js ');函数getCountByConditions(){ user . count({ }),函数(err,RES){ if(err){ console . log(err);} else { console . log(RES);//将输出的数据库数据数量} });}//调用函数getCountByConditions();以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:节点使用Mongoose类库实现简单的添加、删除和修改是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。