在App Sync中的查询结果中过滤子文档

时间:2019-12-14 12:47:25

标签: amazon-web-services graphql aws-amplify aws-appsync

我有两种连接类型

type Auction @model {
  id: ID!
  name: String!
  startingDate: AWSDateTime!
  createdAt: AWSDateTime!
  updatedAt: AWSDateTime!
  products: [Product] @connection(name: "AuctionProducts")
}

type Product @model {
  id: ID!
  name: String!
  description: String!
  price: Int!
  ownerId: String!
  createdAt: AWSDateTime!
  updatedAt: AWSDateTime!
  auction: Auction @connection(name: "AuctionProducts")
}

我想查询一个拍卖以及与之相关的产品,但按ownerId过滤 想法是,用户无法在不属于他的拍卖中看到产品。

我想在服务器端进行安全处理。我在过滤产品时迷失了自己,就好像它们在dynamoDB拍卖文档中一样,但不是。

我已经不知道了……可能吗?

1 个答案:

答案 0 :(得分:1)

现在可能已经解决了,但是您需要拥有Auth服务configured,Cognito是最容易使用的服务。然后在要保护的所有模式类型上使用@auth指令,仅对所有者可见:

type Product @model @auth(rules: [{allow: owner, ownerField: "ownerId"}]) {
  id: ID!
  name: String!
  description: String!
  price: Int!
  ownerId: String!
  createdAt: AWSDateTime!
  updatedAt: AWSDateTime!
  auction: Auction @connection(name: "AuctionProducts")
}