如何访问节点定义的根值或上下文
How to access rootValue or context for nodedefination
我们可以检查 rootValue 或上下文来确定请求对 graphql 请求的角色权限。
使用 graphql-relay-js 时,我们如何检查 nodeDefination 的权限(通过 'node' 请求)?
您应该能够使用 context
或 rootValue
中的值访问您的权限,因为两者都可用于解析器函数:
export const {nodeField, nodeInterface} = nodeDefinitions(
function resolveObjectFromID(globalId, context, {rootValue}) {
const {type, id} = fromGlobalId(globalId);
// Optionally perform auth logic here with either context or rootValue...
// Then proceed with loading as usually; here, for example, using
// DataLoader.
const loader = rootValue.loaders[type];
return (loader && loader.load(id)) || null;
},
function resolveGraphQLTypeFromObject(object) {
return registeredTypes[object.constructor.name] || null;
},
);
请注意,context
参数是在 graphql v0.5.0 中添加的;在此之前,您只能使用 rootValue
。另请注意,您可以在查询中的任何级别执行权限检查,而不仅仅是 node
级别,因为 context
和 rootValue
都会一直向下传播。
我们可以检查 rootValue 或上下文来确定请求对 graphql 请求的角色权限。 使用 graphql-relay-js 时,我们如何检查 nodeDefination 的权限(通过 'node' 请求)?
您应该能够使用 context
或 rootValue
中的值访问您的权限,因为两者都可用于解析器函数:
export const {nodeField, nodeInterface} = nodeDefinitions(
function resolveObjectFromID(globalId, context, {rootValue}) {
const {type, id} = fromGlobalId(globalId);
// Optionally perform auth logic here with either context or rootValue...
// Then proceed with loading as usually; here, for example, using
// DataLoader.
const loader = rootValue.loaders[type];
return (loader && loader.load(id)) || null;
},
function resolveGraphQLTypeFromObject(object) {
return registeredTypes[object.constructor.name] || null;
},
);
请注意,context
参数是在 graphql v0.5.0 中添加的;在此之前,您只能使用 rootValue
。另请注意,您可以在查询中的任何级别执行权限检查,而不仅仅是 node
级别,因为 context
和 rootValue
都会一直向下传播。