问题标签 [mongoose-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
73 浏览

node.js - 为什么我必须在猫鼬预保存中间件中使用 next()

我是第一次使用预保存中间件,有点困惑

我看到了中间件的猫鼬指南,但我仍然不明白为什么我们必须在 func 参数中声明下一个并在函数末尾使用它,我认为它确保在保存模型之前执行所有语句但我'不知道谁能给我解释一下

0 投票
1 回答
268 浏览

javascript - 如何为多个方法注册相同的猫鼬钩子?

我想在 pre-hook 中使用多种方法执行相同的脚本,如下所示:

&

因此,正如您在上面的 2 个脚本中注意到的那样,它们都在执行相同的代码,但具有不同的方法:findOne& findOneAndUpdate

那么,有没有办法一次用相同的代码注册两个预挂钩?

0 投票
0 回答
49 浏览

mongoose - 使用带有 SchemaFactory 的 mongoose 中间件

我正在尝试使用 mongoose 中间件递归地删除另一个对象数组中对该对象的引用(从 idtask中删除引用)taskListtask

有问题的功能:

这会引发 ObjectParameterError:Document() 的参数“obj”在被调用时必须是一个对象

进一步的问题是,在最后一行this.model=> 我没有在任何地方使用模型,因为我没有声明我使用的模型:

任务对象:

在此处输入图像描述

设置对象:

在此处输入图像描述

0 投票
0 回答
23 浏览

node.js - Mongoose:成功创建子文档时更新父文档的字段数组

我在mongoose-TweetComment模型中有 2 个模式。

架构Tweet

架构Comment

POST路线上,我有:

在创建评论时,我想使用post钩子中间件来更新文档comments中的字段。tweet

根据mongoose的文档,Model.create()触发save()中间件。这是正确的,因为打印了“hello world”。doc也在打印新创建的comment文档。

但是,我收到一条错误消息:

有谁知道出了什么问题?我理解错了吗?

0 投票
0 回答
23 浏览

mongodb - mongoose pre 中间件不执行 next

我创建了一个猫鼬中间件,我想返回一个不同的结果(例如一些硬编码的模拟数据)

所以我需要中间件不要在回调函数结束时调用“next()”(因为即使我不调用它,它似乎也被调用了。因为当触发下一个时,原始请求正在发送并返回它的结果,我不想要那个

0 投票
0 回答
11 浏览

mongodb - Mongoose post init 钩子返回部分文档

Mongoose 中间件 post init 挂钩仅返回部分文档。

它返回_id和另一个属性(称为commitments),即使预算模式具有相当多的属性(20+)。

注意:财产没有什么特别之处commitments。此外,记录完全丰富了数据。

我应该补充一点,我的要求是在返回之前修改获取的文档。

0 投票
1 回答
174 浏览

mongodb - Mongoose 查询中间件错误(查询已执行)

当我执行这个模型时,我得到了错误。请解决这个问题。这个问题让我很头疼。反对使用“这里的内容,这里的内容”,使它看起来像可读的英语,许多桌面出版包和网页编辑器现在使用“Lorem Ipsum”作为他们的默认模型文本,搜索“Lorem Ipsum”将发现许多网络网站仍处于起步阶段。多年来,各种版本不断发展。

当我在中间件上运行 calcAverageRatings 然后我得到了这个

0 投票
0 回答
49 浏览

javascript - 猫鼬中的多对多关系级联更新(在ID数组类型的字段中添加或删除元素)?

我希望这个问题能找到你。我有两个模型,第一个教师模型如下:

和这里程序模型

我想添加一个中间件,这样当我通过删除或添加faculties数组中的元素来更新程序时,它将根据删除的faculty_id自动删除或添加到programs字段中。反之亦然,如果通过删除或添加程序字段中的元素来更新学院,则应在相关程序的学院字段中相应地添加或删除学院。我知道前置和后置中间件,但我不知道如何进行这个特定的更新级联,请帮助我,这对我来说真的很重要。太感谢了。