问题标签 [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.

0 投票
0 回答
762 浏览

node.js - mongoose 和 mongoose-schema-extend 中的子文档继承

我尝试使用 mongoose-schema-extend 实现 mongoDB 子文档的继承,然后使用 mongoose 本身。基本要求是在继承类中定义附加属性并将它们放在 DB 上——这在两种方法中都可以正常工作。第二个要求是能够区分类型——使用 discriminatorType 和 instanceOf。discriminatorType 没有使用 mongoose-schema-extend 保存在 DB 中,仅直接使用 mongoose discriminator。instanceOf 在这两种情况下都不起作用(在 parentDocument.find 之后)- 口袋似乎只是对象。

猫鼬模式扩展的代码:

带有 util.extend 的猫鼬代码:

**检查instanceOf的代码:**

mongoose-schema-extend 鉴别器对子文档不能正常工作吗?例如,这不应该返回 true 吗?

提前致谢。

0 投票
0 回答
60 浏览

javascript - MongooseJS - 执行计数后返回查询,然后进行查找

我想获取集合中对象的数量,然后使用该数字执行查找。目前的代码如下所示:

testModel猫鼬模型在哪里。这很好用!但是,如果以上为空,我还希望能够返回整个查询(包括count)预执行callback,以便用户可以将更多选项附加到管道(例如填充)。我怎样才能做到这一点?

0 投票
1 回答
548 浏览

node.js - 使用 Mongoose 填充对父级的引用并在使用 passportjs 进行身份验证后显示完整的父级

我有以下架构userspsp是服务提供者的缩写。服务提供者是一个用户,它对用户有一个引用。我正在尝试使用 NodeJS 的 PassportJS 模块注册和唱歌。我已经能够注册一个sp并且我可以看到数据持久化在 MongoDB 集合中 userssps集合中,但是我无法在个人资料页面上显示 sp 的完整数据。我只能显示它的用户数据。例如,我在身份验证后在个人资料页面中看不到sp' 的spname数据。

以下是部分代码:

用户架构:

sp的架构:

用于登录的 PassportJS 代码:

显示配置文件:

配置文件.ejs

有人可以帮我做什么来显示整个sp对象及其所有数据吗?

0 投票
1 回答
1934 浏览

node.js - 在 Mongoose 插件中添加字段会给出“TypeError: Invalid value for schema path `CreatedBy.type`”

我正在尝试制作一个 CreatedBy Mongoose 插件,但是当尝试使用ObjectId它给我的字段类型时("account"已经是另一个定义的集合):

&这里是插件代码:

那么我如何修改该ref值以使其工作?

0 投票
0 回答
630 浏览

node.js - 在 Mongoose 的插件中调用静态方法到模式

我写了一个插件:

这是我的架构:

如果我在插件之外编写静态方法,它就可以工作。这是来自猫鼬的限制吗?

0 投票
0 回答
197 浏览

android - 在到达列表末尾时加载更多记录(列表视图)

我有一个要求,当用户到达屏幕滚动列表的末尾时,我的列表视图应该通过从服务器读取来显示接下来的 10 个值。

我正在使用“凌空”从服务器异步获取数据。我的服务器代码建立在其中的 Node.js + mongoose 和 MongoDB 之上。我在npm-mongoose-paginate上阅读了有关 Mongoose 分页的信息。有人可以用一个清晰​​的例子来帮助我/解释我使用它。谢谢

0 投票
1 回答
246 浏览

javascript - this.find(...) 永远不会在静态方法中到达回调

我正在开发一个将基于友谊的关系添加到模式的模块。

我基本上是在尝试做这个人想做的事情(AFAIK,应该可以工作——这令人沮丧)

为什么永远不会达到它的回调find(...)FriendshipSchema.statics.getFriends

编辑- 请允许我解释预期的执行流程......

里面accounts.js

  1. 需要 'friends-of-friends' 模块(加载friends-of-friends/index.js
    1. 需要friends-of-friends/friendship.js它导出一个创建FriendshipSchema、添加静态方法、返回Friendship模型的函数。
    2. 需要friends-of-friends/plugin.js它导出 mongoose 插件,该插件将静态和实例方法添加到`AccountSchema.
  2. 使用FriendsOfFriends.plugin(参见friends-of-friends/index.js)从friends-of-friends/plugin.js
  3. 定义AccountSchema.statics.search哪些调用this.getFriends.
    由于this在编译后引用Account模型,并且由于添加了插件schema.statics.getFriends,因此调用this.getFriendsinsideAccountSchema.statics.search将按schema.statics.getFriends定义调用 in friends-of-friends/plugin.js,它将调用Friendship.getFriends(由FriendshipSchema.statics.getFriendsin定义friends-of-friends/friendship.js)调用this.find(...)应该转换为 Friendship.find(...)`
  4. 检索帐户文档后,我account.search('foo', function (...) {...});调用了FriendshipSchema.statics.getFriendsfind

我没有收到任何错误,所以我知道这是一个逻辑问题,但我不确定为什么事情会挂在它们所在的位置......

编辑- 请参阅下面的答案,我还需要编译模型才能调用find它们。

account.js

朋友的朋友/index.js

朋友的朋友/friendship.js

朋友的朋友/plugin.js

0 投票
0 回答
569 浏览

node.js - mongoose 子文档数组的实例方法

我有一个像猫鼬这样的模式

我想将一个实例方法附加到friends数组中,例如,一个myFunction可以像这样调用的函数

猫鼬是否提供了这样做的方法?

PS:在这里,@wciu 询问是否可以在子文档本身上定义一个函数(这是可能的)。这里的问题是是否可以在数组上定义它。

0 投票
1 回答
723 浏览

mongoose - 如何在 Keystone LocalFile 字段中指定自定义开发/前缀

我想在我稍后传递给 List.add 的模式对象中的 keystone.List 构造函数中使用从 autokey 插件生成的相同值。

这更准确地说是我想要做的:

所以这当然行不通。我怎样才能在我的模式中重新使用自动键入的 slug 值?

顺便说一句,引用在“格式”函数中起作用,因为当调用该函数时,它可以通过实例化模型提取存储的值。

0 投票
1 回答
1003 浏览

mongoose - 如何为猫鼬 ODM 编写自定义填充?

Mongoose 有一个填充函数来通过 id 取消引用对象。

我想创建一个函数来通过指定集合和 id 的字段中的数据自动遵守

例如., foo: {col:'user',id:'54c5c5c13a0b4090451f8715'}

似乎猫鼬允许用户创建插件。是否可以创建一个插件来实现这一点?