• Как использовать один и тот же объект но с разными свойствами в разных компонентах?

    asd dsa, честно сказать, я до сих пор не понимаю вопрос целиком и не понимаю в чем именно проблема. Если у вас схема валидная, а проблема в том, что мок-данные не покрывают все необходимые варианты, то вероятней всего надо бороться не с графом, а с мок-данными, то есть с источником.
  • Как использовать один и тот же объект но с разными свойствами в разных компонентах?

    Johnny Lowhunter, если говорить об изменениях, то менять можно данные (на уровне тех же резолверов). Но нельзя просто так схему поменять. Если там прописан определенный набор полей с определенными типами данных, то будут использованы только они. Нельзя через граф запросить данные и получить другие типы данных. Можно только либо до выполнения запроса изменить их (чтобы они соответствовали схеме) или уже после выполнения запроса на своей стороне преобразовать данные.
  • Сколько способов загрузки файлов с использованием API GraphQL есть?

    Иван Шумов, вы кажется сильно загоняетесь. Читайте сами указанную спецификацию.
    GraphQL is not a programming language capable of arbitrary computation, but is instead a language used to query application servers that have capabilities defined in this specification. GraphQL does not mandate a particular programming language or storage system for application servers that implement it. Instead, application servers take their capabilities and map them to a uniform language, type system, and philosophy that GraphQL encodes. This provides a unified interface friendly to product development and a powerful platform for tool‐building.


    Гуглоперевод:
    GraphQL - это не язык программирования, способный к произвольным вычислениям, а язык, используемый для запросов к серверам приложений, которые имеют возможности, определенные в этой спецификации. GraphQL не требует определенного языка программирования или системы хранения для серверов приложений, которые его реализуют. Вместо этого серверы приложений используют свои возможности и сопоставляют их с единым языком, системой типов и философией, которые кодирует GraphQL. Это обеспечивает единый интерфейс, удобный для разработки продукта, и мощную платформу для создания инструментов.


    Условно: что хотите, то и делайте, лишь бы у вас работало и не было конфликтов.

    Вот для примера можете посмотреть мой очень старый код: https://github.com/Fi1osof/gorodskie-bani.ru/blob/...
    Писал его еще в 17-ом году, еще без всяких аполлотулзов и т.п., чистая JS-реализация по спецификации, с исходными JS-типами графа и т.п. Так вот, если внимательно посмотрите, то вызов графа происходит не с передачей ему объекта express, а непосредственно тела запроса, параметров, резолверов и т.п. Условно вы не можете ему передать express-сервер типа "вот тебе сервер, лови запросы и обрабатывай их", а надо настроить свой сервер, ловить запросы и передавать графу в понятном ему виде. А может у вас и вовсе не быть веб-сервера, а просто скрипты локальные работать. Ему пофигу, он об этом не знает и не хочет знать. Ему нужна схема, тело запроса и параметры (если они есть).
    Так что даже если вы и умеете читать спецификацию, судя по всему, до реальной и углубленной самостоятельной реализации вы не дошли. И не путайте людей.
  • Сколько способов загрузки файлов с использованием API GraphQL есть?

    Иван Шумов, GraphQL сама по себе - фича, по большей степени. Реализуемая на множестве языков и технологий. Не думаю, что ТС топит конкретно за ультраспециализированное решение.
    Но конкретно этот вопрос (обработка multypart/formdata) весьма и весьма подробна прописана и принята многими, в том числе и на разных языках. Можно изучать здесь: https://github.com/jaydenseric/graphql-multipart-r...
  • Сколько способов загрузки файлов с использованием API GraphQL есть?

    Иван Шумов, Вполне возможно. Но опять-таки, вопрос на каком уровне начинает использоваться GraphQL. Много кто (в том числе и я) использует Apollo-Server. Тот в express добавляет свои мидлвары. То есть когда с клиента прилетает запрос, он сначала попадает в Apollo-Server, потом уже из него отправляется в GraphQL. Аполло вполне может обрабатывать форм-дата, приводить все в JSON и отправлять уже стандартизированный запрос дальше в GraphQL.
    Когда мы добавляем свои кастомные типы (как было описано выше, добавили Upload), валидация этих типов уже перекладывается на наши плечи. Скорее всего GraphQL-ю из Apollo-Server улетает не JSON, а уже полноценный JS-объект. Бинарные данные в его свойствах полноценными объектами улетают со стримами и т.п. GraphQL стандартные поля валидирует своими методами, а кастомные смотрит зарегистрированы ли валидаторы или нет. У нас для Upload ничего не зарегано и тут он действует по принципу "Если не запрещено, то разрешено" и пробрасывает дальше как есть.
    Так что в целом все может быть очень даже валидно и стандартизировано.
  • Сколько способов загрузки файлов с использованием API GraphQL есть?

    Иван Шумов, вот смотрите пример отправки запроса с файлом на сервер:
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryq9BpEJtLYvXm1vq6
    FormData
    ------WebKitFormBoundaryq9BpEJtLYvXm1vq6
    Content-Disposition: form-data; name="operations"

    {"operationName":null,"variables":{"file":null},"query":"mutation ($file: Upload!) {\n singleUpload(file: $file) {\n id\n filename\n encoding\n mimetype\n path\n __typename\n }\n}\n"}
    ------WebKitFormBoundaryq9BpEJtLYvXm1vq6
    Content-Disposition: form-data; name="map"

    {"0":["variables.file"]}
    ------WebKitFormBoundaryq9BpEJtLYvXm1vq6
    Content-Disposition: form-data; name="0"; filename="chrome_24x24-a7ca66e6b4.png"
    Content-Type: image/png

    ------WebKitFormBoundaryq9BpEJtLYvXm1vq6--

    Как много JSON вы здесь видите? Это классический multipart/form-data, бинарный.
  • Сколько способов загрузки файлов с использованием API GraphQL есть?

    Иван Шумов, читайте внимательно спецификацию, там описывается как свои кастомные типы добавлять, какие хотите.
    GraphQL - это только схема по большей степени. Что и как работает - это на вашей совести и ответственности.
    И посмотрите, к примеру, довольно популяный компонент https://www.npmjs.com/package/graphql-upload с 500 000 загрузок в неделю, объясните всем им, что они неправильно двигаются все.

    Еще раз: GraphQL позволяет загружать бинарники (и можно даже пачками) и я этим успешно пользуюсь каждый день.

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

    Shakir Darion, вариантов реализации много, это часто влияет на весь проект в целом (то есть все связано с архитектурой проекта). То, как у меня работает, совершенно не факт, что будет работать у тебя. Я же не буду здесь учить как весь проект строить. Здесь задают вопросы по отдельным моментам. А не видя как у тебя делается нельзя сказать что там так или не так.

    Но если говорить про то, как я ошибки выбрасываю, у меня два основных момента:
    1. Просто выбрасывать throw new Error (ErrorMessage). Собственно, как и у тебя. И как и у тебя, у меня тоже на выход уходит массив объектов ошибок (не скаляры. Скаляры в этих ошибках в свойствах типа .message). На фронте apollo-client корректно принимает этот массив и выводит сообщение. Вот пример обработки массива ошибок: https://github.com/prisma-cms/front/blob/7aa9621be... (только код очень старый и не оптимальный, он просто для примера, к тому же там this.setState вызывается на каждой итерации цикла, что в корне неправильно).
    2. Не выбрасывать эксепшены, а набивать в собственный массив ошибок в объекте ответа. Это уже многоуровневый объект, в котором конечный запрашиваемый ответ в отдельном свойстве находится. Пример схемы:
    type CareerResponse {
    success: Boolean!
    message: String
    errors: [Error!]!
    data: Career
    }
    
    type Error {
    key: String!
    message: String!
    }
    
    type Career
    implements Node {
    id: ID!
    createdAt: DateTime!
    updatedAt: DateTime!
    CreatedBy: User
    name: String
    }
  • Как добавить строку в массив ошибок?

    Shakir Darion, не очень понял вопроса. Пример покажи что именно и как пытаешься обработать.
  • Как добавить строку в массив ошибок?

    Shakir Darion, для того, чтобы вы могли себе выстрелить в ногу.
    А если серьезно, то только для тех случаев, когда вы используете полностью свой фронт, со своими собственными обработчиками ошибок и т.п.
    А если используете какие-то готовые решения, то изменив отдаваемые ошибки, вы нарушите их работу.
    И formatError работает не тогда когда вы пытаетесь вставить свою ошибку в виде строки вместо объекта (о чем вы и спрашиваете), а когда уже все запросы выполнены и надо отдать ответ клиенту.

    P.S. вы в GraphQL новичок, как пишете, а я уже 3 года с ним плотно очень работаю, в том числе и ошибки кастомизировал, и огребал из-за этого. Так что можете не верить, но основания у меня все-таки есть это все говорить.
  • Forever не запускает nodejs приложения, в чем ошибка?

    Давно перестал использовать forever. IMHO pm2 более функциональный и понятный, и менее глючный.
  • Почему не срабатывает fadeIn()?

    #text{
    display: none;
    }

    let text = document.getElementById('text');

    Предполагаю, что его вы и хотите фейдить.
    Тогда $(text).fadeIn(3000);

    А в вашем примере, как Сергей delphinpro и отметил, ивент навешен на документ.
    document.addEventListener('keydown', addLetter);
    Соответственно this в обработчике - это документ.
    Вот если бы вы обработчик навесили на #text, тогда бы в this был текст. Но тогда у вас кнопки не будет отлавливать :)
  • Как исправить ошибку?

    Егор Антропов, жесть))) Ю - юзабилити.
    Перепостил.
  • Как исправить ошибку?

    Егор Антропов, Егор, отметьте уже ответ. 0xD34F имел ввиду, что в JS регистр в наименовании переменных и прочего важен. Просто пишите classList вместо classlist.

    И, в случае, если вы в body обращаетесь, не обязательно его искать через селектор. Достаточно просто document.body.classList.toggle()
  • Может ли один спиппет быть продолжением другого по php коду?

    Что я вам на это могу сказать? Неправильно пробовали. Я точно знаю, что говорю, и сегодня это опять использовал. Значит где-то ошиблись или переопределили.