【问题标题】:Mongoose: use plugin in Schema static methodMongoose:在 Schema 静态方法中使用插件
【发布时间】:2014-11-13 22:39:48
【问题描述】:

我使用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);

否则你会得到“Model .... has no method 'someMethod'”
静态函数中的游戏变量是可识别事件,尽管它仅在脚本的后面定义。
=> 额外问题:有人知道它为什么起作用吗?

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-plugins


    【解决方案1】:

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

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

    【讨论】:

    • 它确实以这种方式工作 :) 只是一个精度:我试过了,但我把 var Game =mongoose.model('Game', GameSchema);在我的静态函数 def 之前,因此得到“未知方法”。我再次尝试并将其放在文件末尾,现在它可以工作了(这对我来说仍然有点奇怪,因为我在静态方法中使用它时没有定义 Game var)。
    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2021-04-09
    • 2023-03-14
    • 2015-06-22
    • 2013-11-12
    • 2023-03-17
    • 2015-04-11
    相关资源
    最近更新 更多