从经过身份验证的用户那里读取单个子条目
Read a single sub-entry from the authenticated user
我正在使用“查看器模式”来获取属于经过身份验证的用户的图像:
type Query {
me: User! @auth
}
type User {
name: String!
images: [Image] @hasMany
}
我用:
{
me {
images {
id
url
}
}
}
这一切都很好,但是 returns 我是用户的所有图像。
我的问题是:如何通过 ID 从经过身份验证的用户那里获取单个图像?
我试过这个:
type User {
name: String!
images: [Image] @hasMany
"Fetch image by its ID"
image(id: ID @eq): Image @find
}
我用:
{
me {
image(id: 4) {
id
url
}
}
}
虽然这有效,但它会造成 巨大的安全性 问题。任何登录的人都可以访问任何用户的任何图像。
我尝试混合使用 @find
和 @whereAuth
但我得到了这个
异常:
Call to a member function getRelationExistenceQuery() on null
想法?
我发现我做错了什么。 @whereAuth
需要一个参数:
type User {
name: String!
images: [Image] @hasMany
"Fetch image by its ID"
image(id: ID @eq): Image @find @whereAuth(relation: "user")
}
或者,您可以将 @find
替换为 @where
+ @first
:
type User {
name: String!
images: [Image] @hasMany
"Fetch image by its ID"
image(id: ID @where): Image @whereAuth(relation: "user") @first
}
当然,总有使用策略的替代方法。
我正在使用“查看器模式”来获取属于经过身份验证的用户的图像:
type Query {
me: User! @auth
}
type User {
name: String!
images: [Image] @hasMany
}
我用:
{
me {
images {
id
url
}
}
}
这一切都很好,但是 returns 我是用户的所有图像。
我的问题是:如何通过 ID 从经过身份验证的用户那里获取单个图像?
我试过这个:
type User {
name: String!
images: [Image] @hasMany
"Fetch image by its ID"
image(id: ID @eq): Image @find
}
我用:
{
me {
image(id: 4) {
id
url
}
}
}
虽然这有效,但它会造成 巨大的安全性 问题。任何登录的人都可以访问任何用户的任何图像。
我尝试混合使用 @find
和 @whereAuth
但我得到了这个
异常:
Call to a member function getRelationExistenceQuery() on null
想法?
我发现我做错了什么。 @whereAuth
需要一个参数:
type User {
name: String!
images: [Image] @hasMany
"Fetch image by its ID"
image(id: ID @eq): Image @find @whereAuth(relation: "user")
}
或者,您可以将 @find
替换为 @where
+ @first
:
type User {
name: String!
images: [Image] @hasMany
"Fetch image by its ID"
image(id: ID @where): Image @whereAuth(relation: "user") @first
}
当然,总有使用策略的替代方法。