@NikitaZA

Как вывести массив в вложенном запросе GraphQL?

Сервер node.
Есть пользователь и его изображения, имеется два массива объектов. Изображения вложены в пользователей.
Данные от БД
obj =[{
  id: 1,
  name: "qwe",
    img: [
       {id: 1, name: "img1"},
       {id: 2, name: "img2"},
       {id: 3, name: "img3"},
    ]
}]

При запросе
{
  user(id:1){
    id name
    img{id name }
  }
}

Я получаю
{
  "id": 1,
  "name": "qwe",
  "img": {
    "id": null
  }
}


Если img передать как объект img: {id: 1, name: "img1"}. То все работает но естественно передается одно изображение.
Надо как то сделать
{
  "id": 1,
  "name": "qwe",
  "img":[ 
    {id: 1,  name: "img1"},
    {id: 2,  name: "img2"},
    {id: 3,  name: "img3"}
  ]
}


Подскажите, ткните носом, да хоть пните... . Не могу понять в чем проблема.
  • Вопрос задан
  • 337 просмотров
Решения вопроса 1
@NikitaZA Автор вопроса
Проблема решена , так и не понял почему не работало. Но сей час все хорошо.
Схема
const graphql = require('graphql');

const img = new graphql.GraphQLObjectType({
  name: "img",
  fields: () => {
    return {
      id: {type: graphql.GraphQLInt},
      idUser: {type: graphql.GraphQLInt}, 
      name: {type: graphql.GraphQLString}
    }
  }
})


const user = new graphql.GraphQLObjectType({
  name: 'user',
  description: 'This represents a Person',
  fields: () => {
    return {
      id: { 
        type: graphql.GraphQLInt,
        resolve (res) {
          return res.id;
        } 
      },
      mail: { 
        type: graphql.GraphQLString,
        resolve (res) {
          return res.mail;
        } 
      },
      password: { 
        type: graphql.GraphQLString,
        resolve (res) {
          return "privat info";
        } 
      },
      name: {
        type: graphql.GraphQLString,
        resolve (res) {
          return res.name;
        } 
      },
      img: {
        type: new graphql.GraphQLList(img),
      }
    };
  }
});
module.exports = user;

Запрос
const graphql = require('graphql');
const userSchema = require("../schema/userSchema")

module.exports = {
  type: new graphql.GraphQLList(userSchema),
  args: {
    id: {type: new graphql.GraphQLNonNull(graphql.GraphQLInt)}
  },
  resolve (source, args, context) {
    return [
      {
        id: 123,
        name: "pero",
        img: 
        [
          {id:  1, name: "pero111"},
          {id:  2, name: "pero112"},
          {id:  3, name: "pero113"}
        ]
        
      }
    ]
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы