Graphql 主键与放大模式文件之间的关系

Graphql 主键与放大模式文件之间的关系,graphql,aws-amplify,aws-appsync,Graphql,Aws Amplify,Aws Appsync,通常情况下,我不会尝试在我的放大模式中创建主键之间的关系,尽管我正在尝试重新创建一个friends代码,以便可以使用放大定期部署它,因此在这种情况下,我实际上没有选择 我的问题是,我想在这两个主键之间创建一个链接,并且想知道是否有一种方法可以做到这一点,我也已经遵循了文档 理想情况下,我希望schema.graphql文件如下所示: type ShoppingList @model @key(fields: ["UPC"]) { UPC: Products @conn

通常情况下,我不会尝试在我的放大模式中创建主键之间的关系,尽管我正在尝试重新创建一个friends代码,以便可以使用放大定期部署它,因此在这种情况下,我实际上没有选择

我的问题是,我想在这两个主键之间创建一个链接,并且想知道是否有一种方法可以做到这一点,我也已经遵循了文档

理想情况下,我希望schema.graphql文件如下所示:

type ShoppingList @model @key(fields: ["UPC"]) {
    UPC: Products @connection
    quantity: Int
    timestamp: Int
}

type Products @model @key(fields: ["UPC"]) {
    UPC: String!
    Description: String
    Name: String
    Price: Float
    ProductId: String
    combinedSeaarchKey: String
    Img_URL: String
    LongDescription: String
    UserForRecommendations: Boolean
    Hidden: Boolean
    TrainingImageWidthInches: Float
}
在尝试部署时,我得到错误“Expected scalar and get Products”

理想情况下,我也希望模式相同,因为我不想重新编写我的friends客户端应用程序,而宁愿尝试在模式中修复它


因此,任何帮助都将不胜感激!谢谢

我正在寻找解决同一个一般问题的方法,偶然发现了你的帖子,但后来解决了我的问题。我的问题有点无关,我试图在非标量字段上排序。在您的例子中,您通过尝试从非标量实体中生成密钥来接收该错误。从ShoppingList中删除@key,您应该清除错误,但让我们谈谈我认为您正在努力实现的目标

我想你是想在购物清单和产品之间建立一种1:多的关系

在您的ShoppingList代码中,您将产品作为单个实体,但可能意味着拥有一系列产品:

UPC: [Products]
在此基础上,您需要定义UPC和产品之间的连接。您正确地调用了@connection的用法,但没有创建连接。要在1:Many关系中创建连接,您需要1个购物列表和许多产品。要实现这一点,您可能需要以下几点:

type ShoppingList @model {
    id: ID! #make sure you're specifying a PK for each object
    UPC: [Products] @connection(keyName: "relatedShoppingList" fields: ["id"])
    quantity: Int
    timestamp: Int
}

type Products @model {
    id: ID!
    parentShoppingList: ShoppingList @connection(fields: "relatedShoppingList")
    UPC: String!
    Description: String
    Name: String
    Price: Float
    ProductId: String
    combinedSearchKey: String
    Img_URL: String
    LongDescription: String
    UserForRecommendations: Boolean
    Hidden: Boolean
    TrainingImageWidthInches: Float
}
我预见到您的数据设置会出现一些额外的问题,但这应该会消除产品和购物清单之间的1:many关系