Перья: настройка find() для двух разных запросов

Я использую FeathersJS и ReactJs для создания приложения, и теперь я застрял в определенной точке.

Пользовательский интерфейс, над которым я работаю, представляет собой таблицу, и у меня есть панель навигации для управления отображаемыми данными, как на изображении.

Мой пользовательский интерфейс

При выборе пользователи могут выбрать, сколько результатов они увидят на странице. Кнопки навигации перемещаются между разными страницами. Каждый раз, когда одна из этих вещей меняется, я вычисляю

let skip = (this.state.page - 1) * this.state.limit;
let url = '/users?$sort[name]=1&$skip=' + skip + '&$limit=' + this.state.limit;

а затем сделайте REST-вызов бэкэнду Feathers. Это работает отлично.

Красная стрелка указывает на мою проблему.

Когда пользователь вводит часть имени в это поле ввода, мне нужно выполнить поиск в таблице «Пользователи», чтобы найти всех пользователей с введенной строкой в ​​имени, независимо от позиции и, желательно, без учета регистра. В этом случае я создаю URL-адрес, например

let url = '/users?name=<typed input'>;

а затем сделать вызов REST.

Бывает, что этот вызов попытается найти имя равное , а это не то, что мне нужно. Затем я предполагаю, что мне придется настроить мой метод find() так, чтобы он работал по-разному, когда он получает два разных набора параметров, например, в

пользователи.class.js

const { Service } = require('feathers-sequelize');

exports.Users = class Users extends Service {
    find(data,params) {
        if (data.query.name) {
            // Do something to get the search I need
        }
        return super.find(data,params);
    }
};

Но я действительно не знаю, чтобы продолжить с этого момента.

Должен ли я реализовать необработанный запрос Sequelize внутри этого if? Как лучше всего получить нужные мне данные?


person Ed de Almeida    schedule 29.10.2019    source источник
comment
@daff, есть предложения?   -  person Ed de Almeida    schedule 29.10.2019


Ответы (1)


На самом деле это не вопрос Feathers и даже не вопрос Sequelize, а функция базы данных. Это зависит от того, какая у вас база данных! Для MySQL вы можете использовать команду LIKE для поиска подстроки. Погуглите, как сделать регистронезависимым, если нужно. Я считаю, что для запроса Sequelize сработает что-то вроде этого:

query = {
    name: { $like: '%searchterm%'}
}
person Jim Yagmin    schedule 15.11.2019