我在GraphQL服务器上有一个“查看器上下文”的概念。对于大多数对象,如果“查看者上下文”表明该对象不可见,则加载器仅拒绝加载该对象。这是实现对象级隐私的好方法,但是我需要为系统中的某些对象实现字段级隐私。具体来说,我有一个Challenge
类型,其中包含一个senderArmy
字段。当查看者是发送者时,senderArmy
应该可见,但是当查看者是接收者时,Challenge
应该不可见。 const schema = gql`
type Challenge {
senderArmy: String
}
type User {
challenges: [Challenge!]
}
`;
const resolver = {
Challenge: (obj) => obj.getFilteredFields(),
User: {
challenges: (obj) => obj.getChallenges(),
}
};
对象上的其他字段对双方均应可见。
我已经考虑了几个选项:
我认为理想的情况是可以设置对象级解析器。这样的事情将是理想的:
makeExecutableSchema
这样编码时,Challenge
会忽略我的对象级getFilteredFields
解析器。是否有某种方法可以完成我要寻找的工作,而无需在每个返回Challenge
对象的解析器上调用<p>
<img alt="" src="https://r1.ilikewallpaper.net/ipad-wallpapers/download/26516/Natural-Grove-Green-Trees-Path-ipad-wallpaper-ilikewallpaper_com.jpg"
style="height: 85px; width: 198px" id="imgClickAndChange" onclick="changeImage()" />
</p>
?
谢谢!