猫鼬方法和静态有什么用?

2024-03-30

猫鼬方法和静态有什么用,它们与普通函数有何不同?

谁能用例子解释一下区别。


数据库逻辑应该封装在数据模型中。 Mongoose 提供了两种方法来做到这一点:方法和静态。Methods向文档添加实例方法,而Statics向模型本身添加静态“类”方法。

给出例子Animal型号如下:

var AnimalSchema = mongoose.Schema({
  name: String,
  type: String,
  hasTail: Boolean
});

module.exports = mongoose.model('Animal', AnimalSchema);

我们可以添加一个方法来查找相似类型的动物,并添加一个静态方法来查找所有有尾巴的动物:

AnimalSchema.methods.findByType = function (cb) {
  return this.model('Animal').find({ type: this.type }, cb);
};

AnimalSchema.statics.findAnimalsWithATail = function (cb) {
  Animal.find({ hasTail: true }, cb);
};

这是完整的模型,其中包含方法和静态的示例用法:

var AnimalSchema = mongoose.Schema({
  name: String,
  type: String,
  hasTail: Boolean
});

AnimalSchema.methods.findByType = function (cb) {
  return this.model('Animal').find({ type: this.type }, cb);
};

AnimalSchema.statics.findAnimalsWithATail = function (cb) {
  Animal.find({ hasTail: true }, cb);
};

module.exports = mongoose.model('Animal', AnimalSchema);

// example usage:

var dog = new Animal({
  name: 'Snoopy',
  type: 'dog',
  hasTail: true
});

dog.findByType(function (err, dogs) {
  console.log(dogs);
});

Animal.findAnimalsWithATail(function (animals) {
  console.log(animals);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

猫鼬方法和静态有什么用? 的相关文章

随机推荐

  • 如何在 Xamarin MAC 平台中更改选取器背景颜色

    将 Xamarin 库和 MAC 操作系统更新到最新系统后 在我的 Visual Studio 2017 中 面临选择器背景颜色和在 MAC 平台选择器中选择 聚焦的项目颜色的问题 填充多个值的选择器 打开选择器时无法设置背景颜色 并且所选
  • 安装 Visual Studio 2013 Update 4 后如何修复“无法加载“CheckAttributes”任务”错误

    安装 Update 4 后 我现在发现自己无法构建 甚至清理 任何解决方案 我不断得到 错误 1 无法从 CheckPathAttributes 任务加载 程序集 C Program Files x86 MSBuild Microsoft
  • Pandas read_csv dtype 指定除一列之外的所有列

    我有一个 CSV 文件 我想将其中的大部分值读取为字符串 但如果具有给定标题的列存在 我想将列读取为布尔值 因为 CSV 文件有很多列 所以我不想直接在每一列上指定数据类型并给出如下内容 data read csv sample csv d
  • 在运行时跟踪 java 应用程序

    我想在运行时跟踪 java 应用程序以记录并稍后分析其每个行为 是否有可能挂钩 java 应用程序来获取运行时信息 例如方法调用 带有参数和返回值 和对象的状态 即其属性及其值 我的目标是完全了解应用程序的行为以及它如何处理数据 如果您需要
  • 如何通过单击另一个用户控件的按钮在面板中添加用户控件?

    我有一个 panel1 2 个用户控件 uc1 和 uc2 uc1 已添加到面板中 uc1 有一个按钮UC1 当我单击该按钮时 我想隐藏 uc1 并显示有另一个按钮 UC2 的 uc2 通过单击按钮UC2 我想在面板中隐藏uc2并显示uc1
  • QueryDsl SQL - 左连接子查询

    我在用QueryDsl SQL我想要left join子查询 这是简单的查询SQL SELECT usr memberId payoutsBbf totalPyts FROM users usr LEFT JOIN SELECT pyt m
  • erlang中如何将中缀转换为后缀?

    我刚刚遇到这个帖子 https stackoverflow com questions 4621151 the shortest way to convert infix expressions to postfix rpn in c 相当
  • SQL Server - 实现序列

    我有一个系统 要求我在数据进入数据库之前拥有数据的 ID 我正在使用 GUID 但发现它们太大而无法证明其便利性 我现在正在尝试实现一个序列生成器 它基本上为给定的上下文保留一系列唯一的 ID 值 代码如下 ALTER PROCEDURE
  • Android 13 中的存储权限 - Flutter

    我正在使用读写权限来访问外部存储并获取权限 我正在使用权限处理程序包 AndroidManifest xml
  • 按因子拆分并组合成新列

    我有一个 sql 输出到 data frame 中 如下所示 dateTime resultMean SensorDescription 1 2009 01 09 21 35 00 7 134589 Aanderaa Optode Type
  • WooCommerce 自定义报告:获取具有已完成状态的订单

    我正在为 woocommerce 制作自定义报告我正在尝试为所有已交付订单添加报告 这就是我正在做的事情 orders wc get orders array numberposts gt 1 foreach orders as order
  • 是否可以在信号处理程序中设置承诺?

    我正在寻找一种方法来停止每 2 秒执行一次任务的线程 我决定尝试使用 std promise future 以便线程可以在设置 Promise 时立即退出 include
  • 当我制作结构的浅表副本时,灵活的数组成员不会被复制

    我通过以下方式对结构进行了浅复制 struct Student char name int age Courses list First course node Student friends Flexible array member s
  • Firebase Auth 有没有办法确保所有用户之间的 displayName 是唯一的?

    我创建了一个函数来使用以下代码创建新用户 该代码创建用户并更改其显示名称 export function handleSignup email password name firebase auth createUserWithEmailA
  • 如何在 Java 中创建哈希表?

    在 Java 中创建哈希表 或关联数组 最直接的方法是什么 我的 google fu 已经出现了几个例子 但是有一个标准的方法来做到这一点吗 有没有一种方法可以用键 gt 值对列表填充表 而无需为每对对象单独调用 add 方法 Map ma
  • 在 100% div 内获取水平滚动条

    我正在尝试构建一个快速概述来显示即将到来的日历周 我希望它水平排列 这样如果我们显示完整的日历周 它可能会变得相当宽 我现在已经将其设置为具有固定宽度的内部 div 以便浮动的 日 div 不会返回到下方 和设置为 width 100 的外
  • 为什么 Sublime 包控制不起作用?

    我已经安装了崇高文本2 和以下本指南 https packagecontrol io installation st2 我安装了包控制 一旦我使用了Ctrl Shift PSublime 中的快捷方式 当我输入时install 没有安装选项
  • Cmake gui 重置参数。如何在cmake gui中设置参数?

    我正在尝试在 vtk 构建后构建 cmake 我看到WITH VTK被选中 所以我尝试就地更改VTK PATH 不幸的是我收到这条消息 未找到 VTK 请将 CMake 中的 DVTK DIR 设置为 VTK 构建目录 或 VTK 在日志窗
  • Peewee - 无法连接到主机上的 MySQL 服务器

    我正在使用 peewee ORM 开发一个基于 Flask 的 python 应用程序 我最初连接到本地存储在我的计算机上的数据库 现在尝试过渡到远程连接到数据库 我已经通过服务器的 cpanel 部分在 phpmyadmin 中设置了数据
  • 猫鼬方法和静态有什么用?

    猫鼬方法和静态有什么用 它们与普通函数有何不同 谁能用例子解释一下区别 数据库逻辑应该封装在数据模型中 Mongoose 提供了两种方法来做到这一点 方法和静态 Methods向文档添加实例方法 而Statics向模型本身添加静态 类 方法