验证用户并仅提供他们的相关数据

authenticate user and serve only their related data

我在 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
    }
}

这应该 return null 除非他们经过身份验证并且是指定关系中的用户。我在想我需要这样的权限查询:

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

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

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

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