Size: a a a

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

2020 July 25

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Я его ещё где-то в феврале хапнул. Думал поправили.

А вон, получается что еще висит.
источник

A

Albert in GraphQL — русскоговорящее сообщество
Мне не критично айдишник присвоить ошибке, если стору так нужен он.
источник

A

Albert in GraphQL — русскоговорящее сообщество
Плюс насколько я знаю, вроде для серьёзных ошибок это нормально присваивать айди и давать юзеру только его, а саму ошибку не показывать, если там чувствительные данные
источник

A

Albert in GraphQL — русскоговорящее сообщество
Спасибо большое @nodkz
источник

Д

Дмитрий in GraphQL — русскоговорящее сообщество
Ребят, всем привет, типизирую проект на redux-form и apollo client. В качестве автоматической генерации типов использую graphql-code-generator. И проблема в следующем: никак не получается соединить типы redux-form и сгенерированных. P.s. а здесь нельзя скидывать скриншоты кода?
источник

DV

Dmitry Vndrsn in GraphQL — русскоговорящее сообщество
Дмитрий
Ребят, всем привет, типизирую проект на redux-form и apollo client. В качестве автоматической генерации типов использую graphql-code-generator. И проблема в следующем: никак не получается соединить типы redux-form и сгенерированных. P.s. а здесь нельзя скидывать скриншоты кода?
странно. разве что вы напрямую пытаетесь, либо не типизировали редакс формы
источник

Д

Дмитрий in GraphQL — русскоговорящее сообщество
Dmitry Vndrsn
странно. разве что вы напрямую пытаетесь, либо не типизировали редакс формы
В этом чате нельзя скидывать скриншоты кода? На словах, я конечно, все не объясню
источник

DV

Dmitry Vndrsn in GraphQL — русскоговорящее сообщество
Дмитрий
В этом чате нельзя скидывать скриншоты кода? На словах, я конечно, все не объясню
понятия не имею, скиньте в личку, погадаю)
источник

DV

Dmitry Vndrsn in GraphQL — русскоговорящее сообщество
хотя судя по медиа - можно
источник

AS

Azat S. in GraphQL — русскоговорящее сообщество
А можно тут задам вопрос по связке Sequelize + GraphQL
источник

AS

Azat S. in GraphQL — русскоговорящее сообщество
Модель User:

const User = sequelize.define('user', {
 {
   id: {
     type: INTEGER,
     primaryKey: true,
     autoIncrement: true,
     allowNull: false,
   },
   email: {
     type: STRING,
     unique: true,
     allowNull: false,
     validate: {
       notEmpty: true,
       isEmail: true,
     },
   },
 },
})


Модель Role:

co
nst Role = db.define(
 'role',
 {
   name: {
     type: STRING,
     unique: true,
     allowNull: false,
     validate: {
       notEmpty: true,
     },
   },
 },
})

Role.associate = ({ User }) => {
 Role.belongsTo(User, {
   foreignKey: {
     name: 'createdBy',
     field: 'createdBy',
   },
 })
}

Мне нужно получить информацию о пользователе, не делая второй запрос на получение пользователя по ID в поле createdBy

Сх
ема GraphQL

exte
nd type Query {
   roles(offset: Int, limit: Int): [Role!]
 }

 type User {
   id: Int!
   email: EmailAddress!
 }

 type Role {
   id: Int!
   name: String!
   createdBy: User!
 }

Я
создаю пользователя и роль, добавляя только что созданного пользователя в качестве создателя роли:

const te
stScenario = async ({ DataTable, Role, User }) => {
 const kanyeWest = await User.create({
   email: 'kanye.west@gmail.com',
 })
 await Role.create({
   name: 'Admin',
   createdBy: kanyeWest
}

Когда
я пытаюсь получить список ролей, получаю ошибку: "message": "Cannot return null for non-nullable field User.id."

query Ro
le
s {
 roles(offset: 0, limit: 5) {
   id
   name
   createdBy {
     id
     email
   }
 }
}

Но, если
я изменю поле createdBy в схеме на Int, я получу айдишник пользователя

Что может быть не так? Как можно исправить это, чтоб получать полную инфу о пользователе
источник

Д

Дмитрий in GraphQL — русскоговорящее сообщество
Dmitry Vndrsn
понятия не имею, скиньте в личку, погадаю)
Дмитрий, я вам скинул в личку
источник

AN

Andrey Nikolaev in GraphQL — русскоговорящее сообщество
Azat S.
Модель User:

const User = sequelize.define('user', {
 {
   id: {
     type: INTEGER,
     primaryKey: true,
     autoIncrement: true,
     allowNull: false,
   },
   email: {
     type: STRING,
     unique: true,
     allowNull: false,
     validate: {
       notEmpty: true,
       isEmail: true,
     },
   },
 },
})


Модель Role:

co
nst Role = db.define(
 'role',
 {
   name: {
     type: STRING,
     unique: true,
     allowNull: false,
     validate: {
       notEmpty: true,
     },
   },
 },
})

Role.associate = ({ User }) => {
 Role.belongsTo(User, {
   foreignKey: {
     name: 'createdBy',
     field: 'createdBy',
   },
 })
}

Мне нужно получить информацию о пользователе, не делая второй запрос на получение пользователя по ID в поле createdBy

Сх
ема GraphQL

exte
nd type Query {
   roles(offset: Int, limit: Int): [Role!]
 }

 type User {
   id: Int!
   email: EmailAddress!
 }

 type Role {
   id: Int!
   name: String!
   createdBy: User!
 }

Я
создаю пользователя и роль, добавляя только что созданного пользователя в качестве создателя роли:

const te
stScenario = async ({ DataTable, Role, User }) => {
 const kanyeWest = await User.create({
   email: 'kanye.west@gmail.com',
 })
 await Role.create({
   name: 'Admin',
   createdBy: kanyeWest
}

Когда
я пытаюсь получить список ролей, получаю ошибку: "message": "Cannot return null for non-nullable field User.id."

query Ro
le
s {
 roles(offset: 0, limit: 5) {
   id
   name
   createdBy {
     id
     email
   }
 }
}

Но, если
я изменю поле createdBy в схеме на Int, я получу айдишник пользователя

Что может быть не так? Как можно исправить это, чтоб получать полную инфу о пользователе
скорее всего вы не загружаете пользователя из базы в ресолвере
источник

AS

Azat S. in GraphQL — русскоговорящее сообщество
Andrey Nikolaev
скорее всего вы не загружаете пользователя из базы в ресолвере
В include добавляю вроде

async (parent, { offset, limit }, { models: { Role, User } }) => {
   const roleList = await Role.findAll({
     include: [User],
     order: [['id', 'ASC']],
     offset,
     limit,
   })
   return roleList
 },
источник

AN

Andrey Nikolaev in GraphQL — русскоговорящее сообщество
это бы работало если бы поле называлось user, а не createdBy. попробуйте include: 'createdBy'
источник

AS

Azat S. in GraphQL — русскоговорящее сообщество
Andrey Nikolaev
это бы работало если бы поле называлось user, а не createdBy. попробуйте include: 'createdBy'
Понял, уже лучше "message": "Association with alias \"createdBy\" does not exist on role"
источник

AS

Azat S. in GraphQL — русскоговорящее сообщество
Видимо as надо прописать, вместо foreignKey что-ли
источник

AN

Andrey Nikolaev in GraphQL — русскоговорящее сообщество
к сожалению с sequelize я практически не работал и не смогу подсказать по этой ошибке
источник

AS

Azat S. in GraphQL — русскоговорящее сообщество
Хорошо, спасибо
источник

AN

Andrey Nikolaev in GraphQL — русскоговорящее сообщество
в graphql вложенные ассоциации обычно загружают отдельно
источник