Как ограничить значение поля в документе по значению из документов в другой коллекции?
Есть документ, у него есть поле template – нужно что бы это поле могло принимать только те значения, которые указаны в документах другой коллекции. ПО смыслу это звучит так - есть коллекции с шаблонами, есть коллекции с ресурсами, у ресурсов есть поле в котором указывается какой шаблон у этого ресурса и он должно быть из списка созданных шаблонов в соответствующей коллекции. Пробую это сделать через валидацию поля
let schema = new mongoose.Schema({
template: {
type: String,
validate: async (name)=>{
return new Promise(async (resolve, reject)=>{
const tplModel = model('Template');
const tpl = await tplModel.findOne({name})
if(!tpl){
return reject(false)
}
return resolve(true)
})
}
}
})
В валидаторе я делаю запрос в другую коллекцию, ищу, есть ли там документ с таким именем, как было передано. Но как только я делаю асинхронный запрос в другую коллекцию, этот запрос “зависает”. Подскажите пожалуйста, как можно реализовать подобный функционал?