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