#node.js #mongodb #express #mongoose #urlsearchparams
Вопрос:
У меня есть схема Мангуста под названием события, которая включает в себя множество поставщиков:
vendors: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Vendor"
}
],
Я пытаюсь выполнить запрос в параметрах поиска URL-адресов для первого поставщика в массиве (т. Е. поставщиков[0]). В моем контроллере запрос структурирован следующим образом:
async eventIndexAll (req, res, next) {
let queryArray = [];
let queryObject = {};
let { search, vendor } = req.query;
if(vendor) queryArray.push({"vendors[0].id": vendor});
if(search) {
const regex = new RegExp(middleware.escapeRegex(search), 'gi');
queryArray.push({name: regex});
}
if(queryArray.length) {
queryObject['$and'] = queryArray;
}
В моем представлении Индекса событий у меня отображаются теги для поставщиков[0]:
<a href="/event/?vendor=<%- event.vendors[0].id %>">
amp;nbspamp;nbsp<span class="vendors-tag"><%- event.vendors[0].name %></span>
</a>
Когда я нажимаю на тег, параметр поиска URL-адреса выглядит правильно (/событие/?поставщик=5f699ee13e4f99dddc746fd2), хотя он возвращает не все записи о событиях, которые включают этот идентификатор поставщика.
Я предполагаю, что это связано с тем, что event.vendors включает только этот идентификатор, а не точно РАВЕН ему, но я не уверен, как я могу выполнить подобный запрос в параметрах поиска URL. Кто-нибудь может посоветовать, что я делаю не так, пожалуйста?
Комментарии:
1. Каков тип
vendors[0].id
данных в базе данных?2. @Joe это тип объекта: тип: мангуст. Схема. Типы. Объект