Size: a a a

GraphQL — русскоговорящее сообщество

2021 September 23

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Транспорт при этом разный бывает. И не ограничен http классическим. Многие на сокетах делают
источник

АА

Андрей Антипов... in GraphQL — русскоговорящее сообщество
источник

АА

Андрей Антипов... in GraphQL — русскоговорящее сообщество
Как работать с такими ошибками на фронте?
источник

АА

Андрей Антипов... in GraphQL — русскоговорящее сообщество
В ответ приходит 200, но по сути мутация вернула ошибку. Писать на каэжую мутацию проверку на наличие error?
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Сделайте глобальный обработчик ошибок и все
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
На уровне линка
источник

АА

Андрей Антипов... in GraphQL — русскоговорящее сообщество
обрабатывать массив graphQLErrors ?
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
да
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
У нас это поле вообще хитро работает.

Если фронтендер в запросе указал это поле (error), то ошибка из мутации в нем вернется. Если не запросил, то на глобавльном уровне.

Т.е. сам клиент решает как ему удобнее с ошибками работать. На глобальном уровне общим перехвадчиком. Или уже непоредственно в том месте, где вызвана мутация.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Просто под капотом все мутации обернуты, и если в интроспекуии запроса найдено поле error, то вернуть выдернуть его и вернуть тут же в качестве значения. Если не указано то выбросить выше, чтоб сам графкуэль ее на верхнем уровне поймал и добавил в errors.
источник

П

Павел in GraphQL — русскоговорящее сообщество
Всем привет! В этом компоненте в 42 строке (рис. 1) делается запрос через useQuery на получение списка элементов. Код gql хранится в переменной CHATMAPS_QUERY.
При клики на кнопку удалить, вызывается функция которая с помощью мутации удаляет выбранный элемент (рис.2). С помощью refetchQueries я подгружаю изменения и тем самым вызываю ререндер компонента ChatMapsTable (на первом рисунке) и все окей.
По аналогии реализую копирование, но refetchQueries не вызывает ререндер родительского компонента (рис.3). В чем может быть проблема?
источник

П

Павел in GraphQL — русскоговорящее сообщество
источник

П

Павел in GraphQL — русскоговорящее сообщество
источник

AK

Aleksandr Kolesnikov in GraphQL — русскоговорящее сообщество
Всем привет.

Ребята, помогите решить задачку.

Есть mutation updateUser. В которой необходимо реализовать добавление новой роли в массив userRole_id. Соответственно, сохранив существующую.

resolvers:

async updateUser(_, args) {
        try {
            const user = await User.findById(args._id);
            if (user) {
                let email = args.email !== undefined ? args.email : user.email;
                let password = args.password !== undefined ? args.password : user.password;
                let firstName = args.firstName !== undefined ? args.firstName : user.firstName;
                let lastName = args.lastName !== undefined ? args.lastName : user.lastName;
                let userRole_id = args.userRole_id !== undefined ? args.userRole_id : user.userRole_id;
                let avatar = args.avatar !== undefined ? args.avatar : user.avatar;
                let canvas = args.canvas !== undefined ? args.canvas : user.canvas;

                await user.updateOne({
                    email, password, firstName, lastName, userRole_id, avatar, canvas
                });
                return user;
            } else {
                throw new AuthenticationError("(Mutation: updateUser, Dir: Resolvers/index.js) - Пожалуйста, заполните все обязательные поля!");
            }
        } catch (err) {
            throw new Error('(Mutation: updateUser, Dir: Resolvers/index.js) - Some error', err)
        }
    },


Заранее благодарен за уделённое время. ☺️
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Офигеть
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Это как же надо не любить программирование :(
источник

AK

Aleksandr Kolesnikov in GraphQL — русскоговорящее сообщество
Это реакция на мой код? )))
Я только учусь. Прошу не гневаться )))
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Да, это все сократить в три строки можно, а по поводу массива, то используйте конкатенацию. userRole_id = [...user.userRole_id, ...args.userRole_id];
Но даже так не стоит делать
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
У вас есть схема, есть входящие параметры, просто сделайте приведение к схеме приходящих DTO.
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Да даже JSON.parse(JSON.serialize(args)) будет элегантнее, чем проверять на undefined
источник