Как создать поисковый фильтр GraphQL в MongoDB для разных аргументов? - PullRequest
0 голосов
/ 28 января 2020

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

Так, например, George может быть имя и фамилия в то же время, и когда я набираю George, я хочу вернуть объекты, которые содержат это имя, в firstName, lastName или email

Вот мой распознаватель

import StageOne from "../../models/StageOne";
import { requireAuth } from "../../services/auth";

export default {
    // Queries
    searchClients: async (_, { input: { firstName, lastName, phone, email } }, { user }) => {
        try {
            await requireAuth(user);
            const where = {}
            if (firstName) {
                where.firstName = firstName
            }
            if (lastName) {
                where.lastName = lastName
            }
            if (phone) {
                where.phone = phone
            }
            if (email) {
                where.email = email
            }

            const results = await StageOne.find(where).collation(
                { locale: 'en', strength: 2 }
            )

            return results
        } catch (error) {
            throw error;
        }
    }

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