介绍
这篇文章将为大家详细讲解有关猫鼬在鸡蛋中是什么?怎么用?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
猫鼬是MongoDB的一个对象模型工具,封装了许多MongoDB对文档的的增删改查等常用方法,让NodeJS操作MongoDB数据库变得更加灵活简单。
1,安装
npm我egg-mongoose——保存
引用>2,配置
在根目录下的/config/插件。js中配置插件
出口。猫鼬={ 启用:没错, 包:& # 39;egg-mongoose& # 39; };3,连接数据库
在根目录下的/config/config.default.js增加配置,其url中为我们的数据库地址,可通过环境变量来区分开发环境还是生产环境,并且确定是否使用用户名密码的数据库
<代码> const刺激=process.env.npm_config_server_prod; 代码>猫鼬:{ 客户:{ url:刺激,# 63;& # 39;mongodb: eggadmin: 123456 @localhost: 27017/dbname # 39;:& # 39;mongodb://127.0.0.1:27017/dbname # 39; 选择:{ useUnifiedTopology:没错, }, }, },4,配置与使用
(1)数据表配置
在应用目录下新建模型文件夹,在模型文件夹下新建JS文件作为数据表的配置内容、下面以书籍表的配置为例
& # 39;使用严格# 39;;/* * * @description:猫鼬书模式, */模块。出口=应用=比;{ const猫鼬=app.mongoose; const模式=mongoose.Schema; const BookSchema=新模式({ 描述:{类型:字符串},/*书籍描述*/名称:{类型:字符串},/*书籍名称*/新闻:{类型:字符串},/*出版社*/作者:{类型:字符串},/*作者*/图片:{数组类型:},/*书籍图片列表*/价格:{类型:字符串},/*价格*/book_type:{/*书籍分类id */类型:Schema.Types.ObjectId, 裁判:& # 39;BookClassify& # 39; }, 用户:{/*书籍发布者id */类型:Schema.Types.ObjectId, 裁判:& # 39;用户# 39; }, create_time:{类型:字符串},/*创建时间*/状态:{类型:字符串},/*状态,1:待购买,2:已购买*/看:{类型:数字}/*浏览数量*/}); 返回mongoose.model(& # 39;书# 39;,BookSchema); };可以看到我们可以通过模式来定义表结构,可以指定字段的类型及关联,设置完字段后就可以生成模特了,这里算是非常简单的配置,更多配置方法可参考文档
(2),使用猫鼬方法
配置完数据表结构后,我们就可以再服务层中调用猫鼬的方法对文档进行增删查改了,已书籍列表的处理逻辑为例子
异步findbookList(数据){ const {desc类型、页面页大小,地位,userId}=数据; const searchVal={} 如果(类型){ searchVal。book_type=mongoose.Types.ObjectId(类型) } 如果(状态){ searchVal。状态=状态 } 如果(userId) { searchVal。用户=mongoose.Types.ObjectId(标识) } const search_term={ 美元或:( {描述:{$正则表达式:desc, # 63;描述:& # 39;& # 39;美元选项:& # 39;美元我# 39;}}, {名称:{$正则表达式:desc, # 63;描述:& # 39;& # 39;美元选项:& # 39;美元我# 39;}}, {作者:{$正则表达式:desc, # 63;描述:& # 39;& # 39;美元选项:& # 39;美元我# 39;}}, {新闻:{$正则表达式:desc, # 63;描述:& # 39;& # 39;美元选项:& # 39;美元我# 39;}}, ), }; const totalNum=等待this.ctx.model.Book.find (searchVal), (search_term) .countDocuments (); const结果=等待this.ctx.model.Book.find (searchVal) .populate ({ 路径:& # 39;用户# 39; 选择:{名称:1、形象:1} }) .populate ({ 路径:& # 39;book_type& # 39; }) ,(search_term) .sort ({create_time: 1}) .skip(方法(页面)- 1)*方法(页大小)) .limit(方法(页大小); 返回结果,# 63;{bean: { 记录:结果, 当前:页面, 大小:result.length, 总:totalNum, },…app.config.msg。GET_SUCCESS}: app.config.msg.GET_ERR; }可以看的到,通过this.ctx.model。书就可以获取到书的模型并且可以调用猫鼬需要的方法,例如填充,发现,,,跳过,限制等等。
5, egg-Mongoose常用的方法
增加数据
this.ctx.model.Book.create(数据回调);其中数据为json数据结构,回调为操作后的回调函数
查询数据
获取所有数据,返回是一个数组
this.ctx.model.Book.find ()获取一个数据,返回是一个对象
this.ctx.model.Book.findOne ()条件查询
this.ctx.model.Article.find(条件,回调);猫鼬在鸡蛋中是什么?怎么用?