Комбинируйте Prisma Query с данными, отличными от Prisma

Хорошо, у меня есть следующие типы, с типом "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
    }
  }
}

person Seldon Stone    schedule 11.10.2018    source источник


Ответы (2)


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

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

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

Есть ли в Споте много SpotRegulation? если да, то правила должны быть подполе места?

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

person Gabriel Tong    schedule 30.04.2019