Query.products在解析器中定义,但不在架构中定义

时间:2018-06-08 12:14:44

标签: graphql apollo

您好我在Customer架构中定义了rootQuery,然后在Product schema中定义了扩展查询。我为产品架构编写了解析器但后来出现了以下错误:错误:在解析器中定义的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;
          });
        }
    ......
    }
};

0 个答案:

没有答案