Query.products определяется в резольверах, но не в схеме - PullRequest
0 голосов
/ 08 июня 2018

Привет, я определил rootQuery в схеме Customer, а затем в схеме Product я расширил запрос.Я написал преобразователи для схемы продукта, но затем получил следующую ошибку: Ошибка: Query.products определено в преобразователях, но не в схеме.

Когда я перемещаю запросы продукта в определение запроса клиента, это работает,

Я не понимаю, почему я получаю эту ошибку.Нужно ли реализовать какой-нибудь rootQuery и вставить его в массив typeDefs, а затем расширить запросы в Customer и Product?

Схема клиента

  import CustomerPhoto from "./customerPhoto";

    const Customer = `
         type Customer {
          customerID: ID!
          firstname: String
          lastname: String
          phone: String
          email: String
          CustomerPhoto: CustomerPhoto
         } 
         input CustomerInput {
          firstname: String!
          lastname: String!
          phone: String!
          email: String!
          } 
          type Query {
          customers(cursor: Int!):[Customer]
          customer(id: Int!): Customer
          }
         type Mutation {
          createCustomer(photo: String!, input: CustomerInput): Customer
          updateCustomer(customerID: ID!, photo: String, input: CustomerInput): Customer
          deleteCustomer(customerID: ID!): Customer
          }
        `;

export default [Customer, CustomerPhoto];

Схема продукта

  import ProductPhoto from "./productPhoto";
    const Product = ` 
     type Product {
      productID: ID!
      name: String!
      description: String!
      pricewithoutdph: Float!
      pricewithdph: Float!
      barcode: Int!
      ProductPhoto: ProductPhoto
     }
     extend type Query {
      products: [Product]
      product(productID: ID!): Product
     }
    `;
    export default [Product, ProductPhoto]

Здесь я импортирую обе схемы. Чего-то не хватает?

const schema = makeExecutableSchema({
  typeDefs: [...Customer,...Product],
  resolvers: merge(CustomerResolvers, ProductResolvers),
  logger: {
    log: e => {
      console.log("schemaError", e);
    }
  },
  resolverValidationOptions: {
    requireResolversForNonScalar: true
  }
});

Решатели продукта

const ProductResolvers = {
  Query: {
    products: (_, { cursor }) => {
      return models.Product.findAndCountAll({
        include: {
          model: models.ProductPhoto,
          attributes: ["productPhotoID", "photo"],
          required: true
        },
        offset: cursor,
        limit: 10,
        attributes: ["productID", "name", "description", "pricewithoutdph", "pricewithdph", "barcode"]
      }).then(response => {
        return response.rows;
      });
    }
};

export default ProductResolvers;

Решатели клиента

const CustomerResolvers = {
      Query: {
        customers: (_, {cursor}) => {
         return models.Customer.findAndCountAll({
            include: {
              model: models.CustomerPhoto,
              attributes: ["customerPhotoID", "photo"],
              required: true
            },
            offset: cursor,
            limit: 10,
            attributes: ["customerID", "firstname", "lastname", "phone", "email"]
          }).then(response => {
            return response.rows;
          });
        }
    ......
    }
};
...