Узел/Мангуст: идентификатор объекта из массива в параметрах поиска URL

#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 это тип объекта: тип: мангуст. Схема. Типы. Объект