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

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 7 ноября 2017 г.

06:12:35 ДП
User 35318732
User 43503298
а вроде нельзя передавать в параметрах мутации объекты? только примитивы и input typ'ы
Можно передавать в параметрах объекты, надо описать их только, позже ссылку кину
10:10:20 ДП
User 144022504
User 35318732
Можно передавать в параметрах объекты, надо описать их только, позже ссылку кину
ждем с нетерпением)
10:27:43 ДП
User 144022504
На западном форуме ответили по моей задаче:

Вы не можете использовать типы объектов в качестве входных данных
для этого вам необходимо использовать входные объекты
10:42:56 ДП
User 306987219
input EventTimesInput {
    start_time: Date! # только если Date - скаляр
    end_time: Date!
}
Только так
10:54:33 ДП
User 35318732
const { GraphQLInputObjectType } = require('graphql');

const ChangeUpdateInput = new GraphQLInputObjectType({
  name: 'ChangeUpdate',
  fields: {
    id: { type: new GraphQLNonNull(GraphQLID) },
    value: { type: new GraphQLNonNull(GraphQLString) },
  },
});

...

mutation: {
  updateChanges: {
    type: new GraphQLList(Types.ChangeType),
    args: {
      updates: {
        type: new GraphQLNonNull(new GraphQLList(ChangeUpdateInput)),
      },
    },
    resolve: ...

  }
}
10:55:40 ДП
User 35318732
схема у меня описывается каноническим graphql модулем
10:56:23 ДП
User 35318732
суть в GraphQLInputObjectType
10:58:00 ДП
User 35318732
http://graphql.org/graphql-js/type/#example-5
graphql.org/graphql-js/type
GraphQL gives clients the power to ask for exactly what they need and nothing more, making it easier to evolve APIs over time.
10:58:39 ДП
11:56:50 ДП
User 144022504
User 306987219
input EventTimesInput {
    start_time: Date! # только если Date - скаляр
    end_time: Date!
}
Только так
{
  "id": "642477506142245",
  "name": "Событие расписания 1",
  "event_times": [
     {
       "id": "642477599475569",
       "start_time": "2017-12-30T12:30:00+0300",
       "end_time": "2017-12-30T14:00:00+0300"
     },
     {
       "id": "642477596142236",
       "start_time": "2017-11-02T09:30:00+0300",
       "end_time": "2017-11-02T11:00:00+0300"
     }
  ]
}


Скорее всего я не правильно выразил задачу. Попробую переформулировать. 
Как создать массив объектов в поле event_times, при том чтобы он был уникальным для каждого эвента?
11:59:46 ДП
User 306987219
Поле event_times к чему относится? К типу ObjectType или внутри мутации аргумент какой-то?
12:04:41 ПП
User 144022504
User 306987219
Поле event_times к чему относится? К типу ObjectType или внутри мутации аргумент какой-то?
здесь схема https://gist.github.com/gHashTag/618b169d7178db0aff7be183c0196880
gist.github.com/gHashTag/618b169d7178db0aff7be183c0196880
12:09:44 ПП
User 306987219
То есть в резолвере поля Event.event_times нужно вернуть массив уникальных значений?
12:10:09 ПП
User 144022504
User 306987219
То есть в резолвере поля Event.event_times нужно вернуть массив уникальных значений?
да
12:10:25 ПП
User 306987219
А в чем проблема? В резолвере этого поля (Event.event_times) делаете выборку и возвращаете только уникальные
12:11:39 ПП
User 144022504
User 306987219
А в чем проблема? В резолвере этого поля (Event.event_times) делаете выборку и возвращаете только уникальные
нуб еще в этом деле) схему правильно сделал?
12:12:42 ПП
User 306987219
С виду нормально, кроме того, что мешаете camelCase и under_score :)
12:14:00 ПП
User 144022504
User 306987219
С виду нормально, кроме того, что мешаете camelCase и under_score :)
типы under_score пишутся? )
12:14:38 ПП
User 306987219
Да как хотите, главное чтоб в одном стиле. Но на функционал это не скажется, просто глаз дергаться будет %)
12:14:59 ПП
User 306987219
как от моих смайлов - то такой :) то такой %)
12:16:18 ПП
User 144022504
User 306987219
как от моих смайлов - то такой :) то такой %)
)))) понял. 
В моделе поле верно сделал?
event_times: [{ start_time: Date, end_time: Date }]
?
12:19:31 ПП
User 306987219
В смысле когда значение возвращаете? Не похоже - там же значения должны быть, а что за значение Date?
12:22:37 ПП
User 144022504
User 306987219
В смысле когда значение возвращаете? Не похоже - там же значения должны быть, а что за значение Date?
полная модель
import mongoose, { Schema } from 'mongoose'

const EventSchema = new Schema({
  name: String,
  teacher: String,
  cover: String,
  description: String,
  start_time: String,
  end_time: String,
  event_times: [{ start_time: Date, end_time: Date  }]
}, { timestamps: true })

export default mongoose.model('Event', EventSchema) 

как я понял mongoose записывает значения в базу данных mongo
12:23:04 ПП
User 306987219
эт не по GraphQL уже
12:24:46 ПП
User 306987219
с mongoose не работал, не знаю
12:30:48 ПП
User 144022504
User 306987219
с mongoose не работал, не знаю
вроде работает сервер, пока не падает) 
как сделать мутацию в поле event_times ?
createEvent(name: String!, event_times: ???): Event
Не укладывается в голове двойная мутация, при том что дат может быть больше чем две
12:32:31 ПП
User 137057102
Привет. Могу ли я использовать rootResolver вместо с GraphQLObjectType. Написал все через JS обьекты, а не на языке graphql. Теперь незнаю как subscriptionсы написать в на JS обьектах. Какие там fields нужны?
01:08:43 ПП
01:11:48 ПП
User 91770096
создаешь в корне схемы поле subcription по аналогии с mutation
01:12:22 ПП
User 91770096
Оно тот же самый 

new GraphQLObjectType({
      name: 'Subscription',
      fields: () => (subscriptionFields)
    });
01:13:04 ПП
User 91770096
единственный момент, помимо resolve: в нем будет еще и subscribe
01:14:43 ПП
User 91770096
https://github.com/apollographql/graphql-subscriptions
github.com/apollographql/graphql-subscriptions
:newspaper: A small module that implements GraphQL subscriptions for Node.js - apollographql/graphql-subscriptions
04:10:19 ПП
User 306987219
User 144022504
вроде работает сервер, пока не падает) 
как сделать мутацию в поле event_times ?
createEvent(name: String!, event_times: ???): Event
Не укладывается в голове двойная мутация, при том что дат может быть больше чем две
input EventTimesInput {
  start_time: Date!
  end_time: Date!
}

type Mutation {
  createEvent(name: String!, event_times: [EventTimesInput!]!)
}