Выполнение запроса graphql из резолвера - для вложенных данных - PullRequest
1 голос
/ 12 апреля 2019

Я реализую схему apqlo server graphql.Все мои определения схемы являются модулями в файлах .graphql.Все мои преобразователи являются модулями в файлах .js.

У меня есть следующий тип:

productSchema.graphql

type Product {
  _id: Int
  company: Company
  productSellingPrice: [PriceHistoryLog]
  productName: String
  category: String
  productDetails: [ProductDetail]
  globalId: Int
  isActive: Boolean
}

extend type Query {
  ProductList: [Product]
}

productDetailSchema.graphql

 type ProductDetail {
   _id: Int
   company: Company
   root: Product
   catalogItem: CatalogItem
   product: Product
   isPerishable: Boolean
   quantity: Float
   isActive: Boolean
 }

 extend type Query { 
   ProductDetailsList(productId: Int!): [ProductDetail]
  }

Что я хочу сделать, это при запросе ProductList, выполнить запрос ProductDetailsList и разрешить поле в продукте оттуда.

Как вы можете видеть, ProductDetail также имеет вложенные поля, поэтому я не могу просто запроситьБД для этого поля в распознавателе продукта.

Есть идеи?Я немного потерян.

Редактировать:

Это мой код разрешения:

Product: {
    company: product => product.companyId,
    category: async product => {
       try {
         let res = await SaleModel.findOne({ productName: 
          product.productName }) ;
          return res.productCategory;
          } catch (err) {
           console.log(err);
         return "Mo Category found";
       }
      }
    },
   Query: {
     async ProductList(obj, args, { companyId }) {
       return await ProductModel.find({
    companyId,
    isActive: true
  }).populate("companyId");
    }
   },
...