при определении схемы для 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 мы определяем имя наших моделей на ссылку на ключ в схеме.
Благодаря этому ваша схема будет короткой, и вы можете использовать любые операции, такие как заполнение (определение модели при заполнении) и агрегирование поиска.
Примечание. ›Это не сработает, когда вы попытаетесь заполнить после агрегирования, имя модели, определенное с заполнением, будет работать только.
Спасибо за чтение :)