Mongoose:在Schema静态方法中使用插件

时间:2014-09-19 10:46:12

标签: node.js mongodb mongoose mongoose-plugins

我使用mongoose random plugin 在我的架构定义中,我调用

GameSchema.plugin(random, { path: 'r' });  

之后我有一个使用插件的自定义静态方法:

GameSchema.statics.someMethod {  
    [...]
    GameSchema.findRandom...  

我收到错误

TypeError: Object #<Schema> has no method 'findRandom'

有没有办法实现我想要做的事情,还是应该实现某种存储库?

编辑:
Ben的答案奏效了,我需要在模型上使用findRandom,而不是架构 在我的情况下精确:你需要先声明你的静态函数

GameSchema.statics.someMethod {  
    [...]
    Game.findRandom...

然后注册您的架构

var Game = mongoose.model('Game', GameSchema);

否则你会得到&#34;模型....没有方法&#39; someMethod&#39;&#34;&#34;
静态函数中的游戏变量是识别事件,尽管它仅在脚本中稍后定义 =&GT;奖金问题:有谁知道它为什么有效?

1 个答案:

答案 0 :(得分:0)

您在模式上调用方法,而您需要在模型上调用它。

var Game = mongoose.model('Game', GameSchema);

Game.findRandom()...