Как передать вложенные поля в ссылку REST API для фильтрации вложенных моделей мангуста - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю над REST API и не знаю, как фильтровать с помощью вложенного поля, которое productType.markteplace.name.

Вот модели:

hashtag : {
    name: {type: String },
    productType: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'ProductType',
      required: true
    }
}
productType:  {
    name: {type: String},
    marketplace: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Marketplace'
    }
  }

Это контроллер, где поиск

    let options = {
      populate: [{
        path: 'supplier',
        model: Supplier
      },
      {
        path: 'productType',
        model: ProductType,
        populate: {
          path: 'marketplace',
          model: Marketplace
        }
      }]
    };
    let search = { };
    if (req.query.search) {
      search.name = req.query.search;
    }
    let conditions = {
      ...req.query.conditions,
      ...search
    };
    Hashtag.paginate(conditions, options).then((result) => {
      res.status(200).json(result);
    })

С этим кодом нормальный фильтр или поиск типа "& name = x" работает нормально, но я спрашиваю, как фильтровать по значению имени рынка "& productType.markteplace.name = x"

1 Ответ

0 голосов
/ 11 апреля 2019

Используя find(), вы можете заполнить всю коллекцию, а затем перебрать документы.

Hashtag.find({})
  .populate({
        path: 'productType',
        model: ProductType,
        populate: {
          path: 'marketplace',
          model: Marketplace
        }
      })
  .then(function(hashtags) {
    hashtags.find(hashtag => hashtag.productType.marketplace.name == req.query.search)
  })
  .catch(err => console.log(err));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...