Объединить запрос Prisma с данными, не относящимися к Prisma - PullRequest
0 голосов
/ 12 октября 2018

ОК, поэтому у меня есть следующие типы, с типом «Spot» из призмы.

type Query {
  SpotDetails(id: ID!, lat: String, long: String, regLocation: String): SpotDetails!
  Spots: [Spot!]!
}

type SpotDetails {
  info: Spot!
  regulations: [SpotRegulation]

}

type SpotRegulation {
  regulationNumber: String
  generalRegText: String
  waters: String
  seasons: String
  bags: String
  notes: String
}

Как создать распознаватель, в котором я могу запросить у Prisma место id, а затем объединить его с другими полями типа SpotRegulation?По сути, я хочу иметь возможность запросить SpotDetails.

Прямо сейчас для распознавателя у меня есть следующее, но я не думаю, что это работает, потому что информация, предоставленная для запроса Prisma, является информацией SpotDetailsа не информация о Spot, которую он ожидает.

SpotDetails(parent, args, ctx, info) {
  let { id } = args;
  let details = new Object();
  details['info'] = ctx.db.query.spot({ where: { id } }, info);

},

Вот запрос, который я использую на площадке GraphQL для проверки этого

query {
  SpotDetails(id:"cjkbwq1nm00310a958udjcr20"){
    regulations{
      notes
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Если не передан инфо-объект, думаю, он не будет работать при вложенных многоуровневых полях.prisma возвращает только поля, связанные с Spot.

Имеет ли Spot много SpotRegulation?если да, то правила будут подполем спота?

Если вам не нужен информационный объект pass, вы можете использовать generated javascript client, а не prisma-binding db

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

Поэтому я изначально включил информацию, потому что она использовалась в примере кода из шаблона GraphQL.Однако после просмотра призменных документов в отношении чтения данных ни один из примеров не включал передачу информации.Я не уверен, для чего используется информация, но когда я удалил ее из спотового вызова, в резольвере, как показано ниже, она работала как ожидалось.Мне все еще нужно выяснить, почему информация была передана, но для того, что мне нужно было сделать, это было необходимо.

SpotDetails(parent, args, ctx, info) {
  let { id } = args;
  let details = new Object();
  details['info'] = ctx.db.query.spot({ where: { id } });
  return details;
},
...