Mongoose: использовать плагин в статическом методе Schema
Я использую случайный плагин Мангуста.
В моем определении схемы я называю
GameSchema.plugin(random, { path: 'r' });
После этого у меня есть собственный статический метод, который использует плагин:
GameSchema.statics.someMethod {
[...]
GameSchema.findRandom...
И я получаю ошибку
TypeError: Object #<Schema> has no method 'findRandom'
Есть ли способ достичь того, что я пытаюсь сделать, или я должен внедрить какое-то хранилище?
РЕДАКТИРОВАТЬ:
Ответ Бена сработал, мне нужно было использовать findRandom для модели, а не для схемы.
Точность для тех, кто в моем случае: вам нужно сначала объявить вашу статическую функцию
GameSchema.statics.someMethod {
[...]
Game.findRandom...
затем зарегистрируйте свою схему
var Game = mongoose.model('Game', GameSchema);
в противном случае вы получите "Модель.... не имеет метода someMethod"
Игровая переменная в статической функции является распознанным событием, хотя она определяется только позже в скрипте
=> Бонусный вопрос: кто-нибудь знает, почему это работает?
1 ответ
Вы вызываете метод в схеме, тогда как вы должны вызывать его в модели.
var Game = mongoose.model('Game', GameSchema);
Game.findRandom()...