GraphQL несколько ассоциаций - PullRequest
       33

GraphQL несколько ассоциаций

0 голосов
/ 04 октября 2018

У меня есть следующие модели в продолжение

Пользователь

User.associate = models => {
    User.hasMany(models.Schedule, {
        onDelete: 'CASCADE',
        foreignKey: 'patient_id',
        sourceKey: 'id',
        as: 'patient'
    });

    User.hasMany(models.Schedule, {
        onDelete: 'CASCADE',
        foreignKey: 'professional_id',
        sourceKey: 'id',
        as: 'professional'
    });
};

Расписание

Schedule.associate = models => {
    Schedule.belongsTo(models.User, {
        foreignKey: 'patient_id',
        targetKey: 'id',
        as: 'patient'
    });
};

Schedule.associate = models => {
    Schedule.belongsTo(models.User, {
        foreignKey: 'professional_id',
        targetKey: 'id',
        as: 'professional'
    });
};

И следующие схемы в graphql

user

type User {
  id: ID!
  schedules1: [Schedule] @relation(name: "patient")
  schedules2: [Schedule] @relation(name: "professional") 
}

schedule

type Schedule {
  id: ID!
  date : Date
  patient: User! @relation(name: "patient")
  professional: User! @relation(name: "professional") 

}

но при попытке запроса пользователей с расписаниями, подобными этому

{
 users{
   id
   name
   schedules1{
     id
   }
  }
}

, я получил следующий результат

{
 "data": {
   "users": [
    {
      "id": "1",
      "name": "Gregorio",
      "schedules1": null
   },
  ...

У меня такой вопрос, как я могу смоделировать множественные ассоциации в graphql, я безуспешно пытался аннотировать @relation.

1 Ответ

0 голосов
/ 04 октября 2018

ошибка нуб ... я забыл добавить решатель в отношения.

User: {
    patient: async(user, args, { models }) =>
        await models.Schedule.findAll({
            where: {
                patient_id: user.id,
            },
        }),
    professional: async(user, args, { models }) =>
        await models.Schedule.findAll({
            where: {
                professional_id: user.id,
            },
        })
},
...