при определении схемы для mongo с помощью mongoose мы часто сталкиваемся с проблемой принятия одного поля и сохранения нескольких ссылок в одном поле, например, для схемы уведомления, если мы берем параметр ID и сохраняем некоторый _id init, и хотели создать два ссылки в один идентификатор, затем как это делается, ссылка на динамическую модель ответа и с этими функциями заполнения и поиска также хорошо работают, поэтому давайте рассмотрим пример, если это - ›

const commentSchema = new Schema ({
body: {type: String, required: true},
on: {
type: Schema.Types.ObjectId,
required: true,
// Вместо жестко запрограммированного имени модели в ref, refPath означает, что Mongoose
// будет искать нужную модель в свойстве onModel.
refPath: 'onModel'
} ,
onModel: {
type: String,
required: true,
enum: ['BlogPost', 'Product']
}
}) ;

поэтому, когда вы присмотритесь к схеме выше, вы обнаружите, что мы используем refPath вместо ref, а в refPath: определено 'OnModel', а в onModel мы определяем имя наших моделей на ссылку на ключ в схеме.

Благодаря этому ваша схема будет короткой, и вы можете использовать любые операции, такие как заполнение (определение модели при заполнении) и агрегирование поиска.

Примечание. ›Это не сработает, когда вы попытаетесь заполнить после агрегирования, имя модели, определенное с заполнением, будет работать только.

Спасибо за чтение :)