Я реализую схему 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");
}
},