Как отсортировать список пользователей по имени на сервере узла? - PullRequest
0 голосов
/ 26 апреля 2020

Я создал несколько учетных записей пользователей на mongodb и хочу отсортировать их по имени пользователя. Я сравниваю имена пользователей в базе данных со строкой, предоставленной через запрос aax ios, со значением тела, которое берется из входного значения, например:

frontend

const findUsers = async () => {
            try {
                const response = await axios.post(`http://localhost:8080/search-users/${_id}`, { searchValue }); 
                setReturnedUser(response.data.matchedUser);
            } catch (error) {
                console.log(error);
            }
        }

        findUsers();

backend

exports.sort = (req, res) => {
    let result;

    User.find({ name: req.body.searchValue }).exec((error, users) => {
        if (error) {
            return res.status(400).json({
                message: error,
            });
        }

        result = users;

        res.status(200).json({
            message: 'Description added successfully',
            matchedUser: result,
        });
    });
};

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

Я успешно достиг этого на стороне реакции, но это было возможно только путем извлечения всех пользователей из базы данных, что было бы очень плохой идеей для многих пользователей. Очевидное решение - выполнить сортировку на сервере.

1 Ответ

1 голос
/ 26 апреля 2020

Фильтрация на стороне клиента возможна, но с некоторыми изменениями в вашей архитектуре:

  1. Создайте конечную точку в узле, которая возвращает всех пользователей как JSON. Добавьте кеширование на эту конечную точку. Призыв к происхождению будет происходить очень редко. Вы можете легко отфильтровать список.
  2. Используйте что-то вроде GraphQL и Appollo внутри узла. Это поможет производительности

. Чтобы выполнить фильтрацию в узле, вы можете использовать обычный array.filter ()

. В качестве быстрого подхода я сделаю фильтр в пн go. затем измените его, если вы заметили проблемы с производительностью. Лучше не делать предварительную оптимизацию. Поскольку Mon go - это не SQL, это будет быстро

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...