在内省中隐藏内容
默认情况下,所有类型,字段在内省中都是可见的。但可能你希望根据不同的用户来隐藏一些信息,避免引起不必要的误会。你可以在类型或者字段上添加visible
属性来做到。
#![allow(unused)] fn main() { extern crate async_graphql; use async_graphql::*; #[derive(SimpleObject)] struct MyObj { // 这个字段将在内省中可见 a: i32, // 这个字段在内省中总是隐藏 #[graphql(visible = false)] b: i32, // 这个字段调用 `is_admin` 函数,如果函数的返回值为 `true` 则可见 #[graphql(visible = "is_admin")] c: i32, } #[derive(Enum, Copy, Clone, Eq, PartialEq)] enum MyEnum { // 这个项目将在内省中可见 A, // 这个项目在内省中总是隐藏 #[graphql(visible = false)] B, // 这个项目调用 `is_admin` 函数,如果函数的返回值为 `true` 则可见 #[graphql(visible = "is_admin")] C, } struct IsAdmin(bool); fn is_admin(ctx: &Context<'_>) -> bool { ctx.data_unchecked::<IsAdmin>().0 } }