猫鼬在鸡蛋中是什么?怎么用?

  介绍

这篇文章将为大家详细讲解有关猫鼬在鸡蛋中是什么?怎么用?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

猫鼬是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(条件,回调);

猫鼬在鸡蛋中是什么?怎么用?