首页 > 解决方案 > 在 App Sync 的查询结果中过滤子文档

问题描述

我有两种类型的连接

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 文档中一样,但它们不是。

我不知道了……这可能吗?

标签: amazon-web-servicesgraphqlaws-amplifyaws-appsync

解决方案


现在可能已经弄清楚了,但是您需要配置一个 Auth 服务,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")
}

推荐阅读