Spec-Zone.ru › Mongoose

Virtualtype

VirtualType()

Параметры:
  • options «Объект»
    • [options.ref] «Строка|Функция» если ref не nullish, это становится заполненным виртуальным
    • [options.localField] «Строка|Функция» локальное поле для заполнения, если это заполненный виртуальный.
    • [options.foreignField] «Строка|Функция» внешнее поле для заполнения, если это заполненный виртуальный.
    • [options.justOne=false] «Логическое» по умолчанию заполненный виртуальный — это массив. Если вы установите justOne, заполненный виртуальный будет единственным документом или null.
    • [options.getters=false] «Логическое» если вы установите это в true, Mongoose вызовет все пользовательские геттеры, которые вы определили для этого виртуального
    • [options.count=false] «Логическое» если вы установите это в true, populate() установит этот виртуальный в количество заполненных документов, а не самих документов, используя Query#countDocuments()
    • [options.match=null] «Объект|Функция» добавьте дополнительное условие соответствия к populate()
    • [options.limit=null] «Число» добавьте значение по умолчанию limit в запрос populate()
    • [options.skip=null] «Число» добавьте значение по умолчанию skip в запрос populate()
    • [options.perDocumentLimit=null] «Число» По соображениям совместимости limit с populate() может давать неправильные результаты, так как выполняется только один запрос для каждого документа, который заполняется. Если вы установите perDocumentLimit, Mongoose обеспечит правильное limit на документ, выполняя отдельный запрос для каждого документа к populate(). Например, .find().populate({ path: 'test', perDocumentLimit: 2 }) выполнит 2 дополнительных запроса, если .find() вернёт 2 документа.
    • [options.options=null] «Объект» Дополнительные параметры, такие как limit и lean.
  • name «Строка»

Конструктор VirtualType

Вот что использует mongoose для определения виртуальных атрибутов через Schema.prototype.virtual.

Пример:

const fullname = schema.virtual('fullname');
fullname instanceof mongoose.VirtualType // true

VirtualType.prototype.applyGetters()

Параметры:
  • value «Объект»
  • doc «Документ» Документ, к которому прикреплен этот виртуальный
Возвращает:
  • «Любое» значение после применения всех геттеров

Применяет геттеры к value.

VirtualType.prototype.applySetters()

Параметры:
  • value «Объект»
  • doc «Документ»
Возвращает:
  • «Любое» значение после применения всех сеттеров

Применяет сеттеры к value.

VirtualType.prototype.get()

Параметры:
  • fn «Функция»
Возвращает:
  • «VirtualType» this

Добавляет пользовательский геттер к этому виртуальному.

Mongoose вызывает функцию геттера с нижеперечисленными 3 параметрами.

  • value: значение, возвращённое предыдущим геттером. Если есть только один геттер, value будет undefined.
  • virtual: виртуальный объект, на котором вы вызвали .get().
  • doc: документ, к которому прикреплён этот виртуальный. Эквивалентно this.

Пример:

const virtual = schema.virtual('fullname');
virtual.get(function(value, virtual, doc) {
  return this.name.first + ' ' + this.name.last;
});

VirtualType.prototype.set()

Параметры:
  • fn «Функция»
Возвращает:
  • «VirtualType» this

Добавляет пользовательский сеттер к этому виртуальному.

Mongoose вызывает функцию сеттера с нижеперечисленными 3 параметрами.

  • value: устанавливаемое значение.
  • virtual: виртуальный объект, на котором вы вызываете .set().
  • doc: документ, к которому прикреплён этот виртуальный. Эквивалентно this.

Пример:

const virtual = schema.virtual('fullname');
virtual.set(function(value, virtual, doc) {
  const parts = value.split(' ');
  this.name.first = parts[0];
  this.name.last = parts[1];
});

const Model = mongoose.model('Test', schema);
const doc = new Model();
// Calls the setter with `value = 'Jean-Luc Picard'`
doc.fullname = 'Jean-Luc Picard';
doc.name.first; // 'Jean-Luc'
doc.name.last; // 'Picard'

© 2010 LearnBoost
Licensed under the MIT License.
https://mongoosejs.com/docs/api/virtualtype.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API