位置: 编程技术 - 正文

Mongoose实现虚拟字段查询的方法详解(mongoose模块有什么用途)

编辑:rootadmin

推荐整理分享Mongoose实现虚拟字段查询的方法详解(mongoose模块有什么用途),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongoose操作,mongoose模块事件,mongoose模块有哪些事件,mongoose怎么用,mongoose模块有哪些事件,mongoose操作,mongoose模块,mongoose objectid,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

不知道大家知不知道,mongoose为数据模型提供了虚拟属性, 借此可以更加一致地、方便地读写模型属性,类似于C#或Java中的访问器。 我们知道虚拟属性在Query阶段一定是查不到的,因为事实上MongoDB并没有存储这些属性。 但是否可以通过一个拦截器来实现虚拟属性的查询呢?

这个问题很有趣,而且在很多场景下都相当方便。例如:

实现一个暴力的全文检索时,需要对多个字段匹配统一查询词,该查询词可抽象为虚拟属性; 多处都需要进行同一个复杂条件的查询时,可以用虚拟属性封装该查询条件。

事实上,虚拟属性查询和虚拟属性读写都是为了代码复用。

Mongoose 中的 Hook

Mongoose Schema几乎所有静态方法和对象方法都添加了 .pre和.post钩子。 这些钩子其实就是函数钩子,采用hooks-js的实现。

Mongoose实现虚拟字段查询的方法详解(mongoose模块有什么用途)

来自官网的例子:

在Document.save()被调用时,上述validate函数就会被回调。

添加查询钩子

Mongoose没有对hooks-js进一步封装,这意味着我们不能对所有Query方法设置钩子, 只能一一枚举需要监视的方法。当然,这不影响我们进行代码复用。

接下来便着手实现preFind函数。

实现虚拟查询

在钩子(preFind)中,我们可以更改查询条件借此实现虚拟查询。 值得注意的是,完全可控的Query意味着我们可以实现任何形式的虚拟查询。

例如全文检索:

总结

标签: mongoose模块有什么用途

本文链接地址:https://www.jiuchutong.com/biancheng/380932.html 转载请保留说明!

上一篇:关于在mongoose中填充外键的方法详解(mongoose操作)

下一篇:Node.js 的模块知识汇总(node.js的内置模块)

  • 增值税专用发票的税率是多少啊
  • 项目税后现金流量的计算方法
  • 宁波财税网会计招聘
  • 印花税按照开票金额缴纳可以吗
  • 折扣折让属于什么科目
  • 弱电系统多少钱
  • 滴滴发票抬头怎么填
  • 专项应付款在资产负债表中如何列示
  • 不征税收入怎么申报企业所得税
  • 那些情况可以申请退税
  • 财政局专利补助政策
  • 长期股权投资稀释
  • 购买的职业险计入哪个科目
  • 去年多做销售费用今年冲回该如何做会计分录?
  • 出口货物如果没收怎么办
  • 电梯按几年摊销
  • 所有的固定资产都有残值率吗
  • 个人公寓出租给公司要交税吗?
  • 固定资产出售怎么做账
  • 个人独资企业还是个体户好
  • 建设银行对公转账限额
  • 餐饮店工装
  • 合并报表中营业利润不等于
  • 行政单位结转结余形成的原因
  • c盘空间变小的原因
  • win7桌面图标变成了lnk
  • win10怎么设置win7开始菜单
  • 山毛榉树林里的草叫什么
  • 公司与个人的往来款怎么处理
  • 租赁费和场地租赁费区别
  • 应用程序无法正常启动0xc000007b
  • 发票开错了怎么处理好?
  • 资产证券化会计信息披露规范
  • 补缴以前年度公积金误入当年费怎么办
  • 阿尔比恩洞的级别
  • 上市公司回购股票意味着什么
  • 企业一次性伤残补助金赔偿标准
  • 没有开发票的收入
  • 预先支付的房租
  • 工资和社保基数不一致
  • 营业外收入的会计科目编码
  • 凭证过账后发现了错误,如何处理
  • 零星开支是什么会计科目
  • mongodb启动
  • 固定资产清理的金额怎么算
  • 库房食品过期报告怎么写
  • SqlServer中用exec处理sql字符串中含有变量的小例子
  • 计提工会经费会计凭证怎么做分录
  • 在建工程转出到什么科目
  • 现金短缺与溢余解析
  • 加计扣除所得税怎么算
  • 转账错误退款说明
  • 企业停产期间在生产违法吗
  • 安装工程什么时候套脚手架搭拆
  • 防伪公司应该选用什么目标市场策略
  • 债券发行费用的计算方法
  • 企业支付宝要手续费吗
  • 损益类科目增加记哪方
  • 股东利润分配预缴税款
  • 工会经费征收项目是什么
  • 新一代win10
  • windows8休眠如何唤醒
  • Win10 Mobile 10549预览版怎么升级?
  • Ubuntu 12.04/14.04 LTS版内核更新 修复七个重大安全漏洞
  • 手动清洁cmos
  • ubuntu系统安装SSH服务
  • linux修改密码认证令牌错误
  • 标签windows
  • win8系统桌面图标
  • 无需u盘安装系统
  • win10怎么添加打印机
  • win7由于所要求的文件丢失或损坏
  • 如何把网址设为常用网址
  • javascript 基础
  • css中的auto
  • js dom方法
  • Django1.7+python 2.78+pycharm配置mysql数据库
  • 陷阱类过关游戏
  • 银行开业送什么花
  • 公租房要钱吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设