问题标签 [mongoose-plugins]
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.
javascript - 你如何从猫鼬中删除模型?
我的意思不是删除一个或多个文件。我的意思是完全删除模型,这样猫鼬就不再知道它了。声明模型后,我不知道如何让猫鼬忘记该模型以便重新创建它。
目前上述抛出异常。
OverwriteModelError:编译后无法覆盖“书”模型。
我希望能够做这样的事情......
...并且不会出现任何错误。有任何想法吗?
javascript - 护照猫鼬对象#没有“身份验证”方法,但我可以看到该方法
我遇到了一个没有意义的问题,无法弄清楚希望有人能提供帮助。
我正在使用一些猫鼬插件,现在也尝试集成护照。我已经添加了 passport-local-mongoose 插件,如下所示,但是我收到了该方法不存在的错误。将架构记录到控制台时,我可以看到列出的方法,所以我不确定它为什么不存在。
代码示例:
控制台日志摘录如下:
但我收到以下错误:
我可以看到该方法可用,为什么我无法访问它。如果我遗漏了一些基本的东西,我深表歉意,我仍在学习其中的一些东西。感谢您的任何帮助。
node.js - how to override function of mongoose plugin?
I have a plugin in mongoose and for each schema i am doing the following
The problem is the createCustomDoc method is also defined in myplugin.
Now i want to override createCustomDoc
of myplugin with the method defined as user.statics.createCustomDoc.
Currently the method called is from the plugin not the one i wrote in user.statics.createCustomDoc.
How do i do that.?
Of course i do not want to change the name of function nor i want to remove the plugin nor i want to change code of plugin.
node.js - 使用 mongoose 和 mongoose-version 更新条目时的新版本
我正在尝试使用 mongoose 跟踪 mongo 数据库中某些文档中的所有修订。出于这个原因,我决定使用插件 mongoose-version。
当我创建一个新文档并将其添加到数据库中时,我可以看到一个版本保存在存储不同版本的集合中。但是,当我使用新文档更新文档时,我可以看到存储文档(最新版本)的集合中所做的更改,但看不到存储在版本化数据库中的新版本。任何线索为什么会发生这种情况?
这是我的架构:
这就是我创建用户的方式:
这就是我更新用户详细信息的方式(本质上只有名称可以更改,但在我学习时仅用于演示目的)。
任何帮助或提示将不胜感激,因为我也是使用 mongo 和 mongoose 的新手。
node.js - 猫鼬搜索产生神秘错误
我正在使用 Mongoose-Text-Search 插件 ( https://github.com/aheckmann/mongoose-text-search ) 来搜索我的 mongodb 数据库,但我收到了一条我从未见过的非常令人困惑的错误消息前。
有人可以解释这是什么意思吗?我想我正确使用了文本搜索插件,但我一辈子都无法弄清楚这里出了什么问题。
谢谢!
node.js - Passport-Local-Mongoose – 当我更新记录的用户名时,我退出了,为什么?
我正在使用带有护照的 MEAN 堆栈和 Passport-Local-Mongoose 插件。但是,每当我更新用户记录的用户名时,我都会退出当前会话。使用 Passport-Local-Mongoose 更新用户名的正确方法是什么?
mongodb - Mongo:$exists 字段的索引
我有以下猫鼬模式:
对于某些 dataObjects,eventCount 已定义且为正数,对于其他 dataObjects,eventCount 未定义。我想设计一个索引,使这样的查询尽可能快:
做这个的最好方式是什么?
这是我能想到的最佳解决方案,但我很想知道是否有人有更好的解决方案:
将 isEventCount 布尔变量添加到 dataSchema。设置 mongoose 中间件,以便在使用以下逻辑将对象保存到 db 之前计算 isEventCount。
然后建立这样的索引
并像这样运行我的查询
这种方法有几个缺点。即:
- 我正在数据库中保存冗余信息。
- 我必须编写额外的中间件代码来实现这一点。
- 我必须修改数据库中的现有条目。
有人知道更好的解决方案或可以帮助解决此问题的库吗?
javascript - 在 Mongoose 模型中访问 Express.js 请求上下文
我正在与我的同事使用Express.js和Mongoose开发一个 REST API 。
对于某些 Mongoose Model
methods
,statics
我们需要将Express.js
Request
对象作为添加的上下文信息源,例如当前正在执行请求的经过身份验证的用户。
我们目前所做的是通过原型化函数将调用的自定义属性附加到a的context
上下文Model
中。this
Mongoose
Model
问题是我们遇到了一个令人讨厌的错误,这让我们意识到,虽然在实例Model.methods
上调用了, 却可以正常工作。Model
对于在“类”Model.statics
上被调用的人,其范围由整个应用程序共享,这意味着如果您有并发请求,如果您在请求处理中有任何异步行为,它们将覆盖彼此的值.Model
singleton
this.context
现在我的问题如下:
Express.js
在和函数Mongoose
中保持和访问上下文request
的最佳实践是什么?Model.statics
Model.methods
当然,有一些可能的黑客来模拟遏制,例如:
Function.bind()
Model
添加请求上下文的每个函数。-> 这意味着如果在
Model.statics.a()
内部调用Model.statics.b()
, 函数b()
不会有this.context
.使用对象
with() {}
上的语句并调用该范围内的request
每个函数。Model
-> 这会很脏而且很慢。
vm
使用标准 Node.js 模块创建具有单独范围的容器。-> 与 (2) 相同,性能会受到很大影响。
有任何想法吗 ?先感谢您 !
node.js - Mongoose:在 Schema 静态方法中使用插件
我使用猫鼬随机插件。
在我的模式定义中,我调用
之后,我有一个使用插件的自定义静态方法:
我得到了错误
有没有办法实现我想要做的事情,或者我应该实现某种存储库?
编辑:
本的回答有效,我需要在模型上使用 findRandom 而不是模式。
就我而言,精确度:您需要首先声明您的静态函数
然后注册您的架构
否则你会得到“模型......没有方法'someMethod'”
静态函数中的游戏变量是公认的事件,尽管它只是在脚本的后面定义。
=> 奖金问题:有人知道它为什么有效吗?