Запрос нескольких полей в одной коллекции из React с использованием Restify на сервере - PullRequest
0 голосов
/ 24 апреля 2020

Я бы хотел запросить коллекцию Mon go с одним поисковым термином и проверить этот поисковый запрос по нескольким полям в коллекции. Я пытался создать этот запрос миллионами разных способов, но независимо от того, что я делаю, я продолжаю возвращать все 4 документа вместо 2, которые фактически соответствуют условиям.

const queryRecipe = {'recipe.recipe.name': {
  $regex: inputValue,
  $options: 'i',
}};
const queryFood = {'food.food.name': {
  $regex: inputValue,
  $options: 'i',
}};
const queryName = {'name': {
  $regex: inputValue,
  $options: 'i',
}};
let params = {
  query: JSON.stringify({$or: [queryRecipe, queryFood, queryName]}),
};
getMealPlans(params).then(results => {
  if (results) {
    console.log(results); // should only return 2, but returns 4
  } else {
    throw new Error('error');
  }
});

Для справки, вот функция getMealPlans из моего файла служб api. js (примечание: apiCall - это вспомогательная c вспомогательная функция, которую мы используем во всем приложении)

export function getMealPlans(id, params = {}) {
  params.populate = [
    {
      path: 'recipes.recipe',
      populate: { path: 'foods.food' },
    },
    {
      path: 'foods.food',
    },
  ];
  return apiCall('get', `/mealplan`, params);
}

Обратите внимание, что если я запрашиваю только один термин, он работает:

const query = {}

query['recipe.recipe.name'] = {
      $regex: inputValue,
      $options: 'i',
    }
    let params = {
      query: query;
    }
...