1

首先,使用 GraphQL 的 Saleor 非常棒。只是喜欢它。

我们销售的产品有额外的元数据,我们需要从 Graphql 获取。开箱即用,Graphql 查询工作正常,例如:

{
  product (id: "UHJvZHVjdDo3Mg==") {
    id
    name
    description
  }
}

我需要做的是使用附加列(例如 productInfo1、productInfo2 和 productInfo3)从我的产品表中公开数据。这部分当然很简单。

但是,我正在努力更新 Saleor Graphql,以便可以运行如下查询:

{
  product (id: "UHJvZHVjdDo3Mg==") {
    id
    name
    description {
      productInfo1
      productInfo2
      productInfo3
    }
  }
}

我浏览过 Saleor 文档、Stack Overflow 和各种博客……我自己尝试了一些合乎逻辑的方法,但没有任何成功。

我迫不及待地开始着手进行这些类型的更新以满足我们的需求。任何“如何”位置的建议或链接将不胜感激!

4

1 回答 1

1

如果您想在描述中添加子字段,您需要做几件事:

  1. 创建包含所需子字段的新描述对象类型,例如:
class ProductDescription(graphene.ObjectType):
    productInfo1 = graphene.String()
    productInfo2 = graphene.String()
    productInfo3 = graphene.String()
  1. description在 type 下使用新类型设置字段Product
class Product(CountableDjangoObjectType):
    ...
    description = graphene.Field(ProductDescription)
  1. description为underProduct类型添加解析器:
def resolve_description(self, info):
    return ProductDescription(
        productInfo1=self.description,
        productInfo2='Some additional info',
        productInfo3='Some more additional info',
    )

Saleor 的 GraphQL API 基于Graphene框架。您可以在此处找到有关解析器和对象类型的更多信息:https ://docs.graphene-python.org/en/latest/types/objecttypes/#resolvers 。

于 2019-05-22T21:40:19.947 回答