Как использовать плагины в Mongoose?

Пользователь

от ottilie.farrell , в категории: JavaScript , год назад

Как использовать плагины в Mongoose?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от velma , год назад

@ottilie.farrell 

Mongoose поддерживает использование плагинов, чтобы расширить функциональность схем и моделей. Вот простой пример использования плагина:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const mongoose = require('mongoose');
const myPlugin = require('./my-plugin');

const mySchema = new mongoose.Schema({
  // поля схемы
});

mySchema.plugin(myPlugin);

const MyModel = mongoose.model('MyModel', mySchema);

module.exports = MyModel;


В этом примере мы создаем схему, добавляем плагин и создаем модель на основе этой схемы. Затем мы экспортируем модель.


Для создания плагина нам нужно создать функцию, которая будет принимать схему и опции плагина в качестве аргументов:

1
2
3
4
// my-plugin.js
module.exports = function myPlugin(schema, options) {
  // реализация плагина
};


Внутри функции плагина мы можем изменять схему или модель, добавляя новые методы, валидаторы, хуки и т.д. Например, мы можем добавить в модель новый метод findByTitle:

1
2
3
4
5
6
// my-plugin.js
module.exports = function myPlugin(schema, options) {
  schema.statics.findByTitle = function(title) {
    return this.find({ title });
  };
};


Теперь мы можем использовать этот метод в нашей модели:

1
2
3
4
5
const MyModel = require('./my-model');

MyModel.findByTitle('My Title').then(docs => {
  console.log(docs);
});


Это примерно то, как использовать плагины в Mongoose. Конечно, это только начало, и вы можете создавать более сложные плагины, в зависимости от ваших потребностей.