验证用户身份并仅提供其相关数据

时间:2019-02-05 18:08:20

标签: graphql graphcool

我在带有这些节点的graphcool中有一个架构(不确定此处的正确术语是……叶?节点?模型?类型?)

type User @model {
  auth0UserId: String @isUnique
  createdAt: DateTime!
  id: ID! @isUnique
  userIdentifier: String
  bundleIdentifier: String
  updatedAt: DateTime!
  devices: [Device!]! @relation(name: "UserOnDevice")
  tokens: [Token!]! @relation(name: "TokenOnUser")
}

type Device @model {
  id: ID! @isUnique
  deviceIdentifier: String!
  users: [User!]! @relation(name: "UserOnDevice")
  token: Token @relation(name: "DeviceOnToken")
}

我想这样做,以便用户必须经过身份验证并与设备数据相关才能查询。因此,对于以下查询:

query($deviceIdentifier: String!) {
    device(deviceIdentifier: $deviceIdentifier) {
        id
    }
}

这应该返回null,除非它们被禁用并且是指定关系中的用户。我当时想我需要这样的权限查询:

query ($node_id: ID!, $user_id: ID!) {
  SomeDeviceExists(filter: {
    id: $node_id,
    users: {
      id: $user_id
    }
  })
}

但是事实证明那是无效的。我该怎么办?

1 个答案:

答案 0 :(得分:1)

query ($node_id: ID!, $user_id: ID!) {
  SomeDeviceExists(filter: {
    id: $node_id,
    users_some: {
      id: $user_id
    }
  })
}

但这确实需要在请求中提交user_id。

相关问题