草庐IT

javascript - Relay/GraphQL 'resolve' 是如何工作的?

我正在尝试Relay和GraphQL.当我在做模式时,我是这样做的:letarticleQLO=newGraphQLObjectType({name:'Article',description:'Anarticle',fields:()=>({_id:globalIdField('Article'),title:{type:GraphQLString,description:'Thetitleofthearticle',resolve:(article)=>article.getTitle(),},author:{type:userConnection,description:'The

javascript - 如何让 Redux Thunk 和 Apollo GraphQL 协同工作

在我的项目中,ReduxThunk用于在actioncreator中保留所有异步函数。现在我正在尝试将ApolloGraphQL添加到我的项目中,一切正常,除了在我的功能组件中添加mutations并在那里调用它们时,它破坏了reduxthunk架构。如何解决?我想我可以创建新的actioncreator方法并将突变传递给它们,但它很快就会变成样板,这对我来说似乎不是一个好的解决方案。 最佳答案 Apollo突变不会破坏reduxthunk架构。如果您需要在突变后更新自己的reducer,请从突变的then或catch中分派(dis

javascript - 您如何为针对 ORM 的分页定义中继连接?

我查看了Relay的所有文档,似乎没有关于如何使用ORM构建Relay连接的直接解释。所有示例似乎都使用了connectionFromArray方法,如果您将数据存储在内存中,这很好,但是当您将数据存储在数据库中时,您将如何提供必要的信息连接的分页工作? 最佳答案 光标是opaque:TheresultofthisfieldisconsideredopaquebyRelay,butwillbepassedbacktotheserverasdescribedinthe"Arguments"sectionbelow.因此,根据您的数据模

javascript - 在 GraphQL 中的突变之前删除只读字段

我的模式中有一个名为Article的类型:typeArticle{id:ID!updated:DateTimeheadline:Stringsubline:String}对于它的更新,updateArticle(id:ID!,article:ArticleInput!)突变使用相应的输入类型:inputArticleInput{headline:Stringsubline:String}突变本身看起来像这样:mutationupdateArticle($id:ID!,$article:ArticleInput!){updateArticle(id:$id,article:$articl

javascript - 如何在 GraphQL 中创建自定义对象列表

我目前正在研究Facebook的一系列新技术。我在使用GraphQL模式时遇到了一点问题。我有这个对象模型:{id:'1',participants:['A','B'],messages:[{content:'Hithere',sender:'A'},{content:'Hey!Howareyoudoing?',sender:'B'},{content:'Prettygoodandyou?',sender:'A'},];}现在我想为此创建一个GraphQL模型。我这样做了:vartheadType=newGraphQLObjectType({name:'Thread',descript

javascript - 如何解析 GraphQL 中的嵌套类型?

我在解析graphql嵌套类型时遇到问题。我可以成功地触发UserMetrics嵌套解析器,但父解析器对象(用户)为空。我是否误解了GraphQL解析器映射?架构:typeUser{id:String!metrics:UserMetrics}typeUserMetrics{lastLogin:String!}解析器:Query:{user(_,{id},ctx){return{id};}},User:{metrics():({}),//UserMetrics.lastLogindoesn'tfirewithoutthis},UserMetrics:{lastLogin(user){co

javascript - 从 GraphQL 响应中清除不需要的字段

我有一个我的GraphQL客户端请求的对象。这是一个相当简单的对象:typeElement{content:[ElementContent]elementId:Stringname:Stringnotes:Stringtype:StringcreatedAt:StringupdatedAt:String}使用特殊类型ElementContent,它很小,看起来像这样:typeElementContent{content:Stringlocale:String}现在,当我在客户端查询这个时,顶级对象和低级对象都有额外的属性(如果我试图按原样克隆主体,这会干扰更新对象);值得注意的是,Gr

javascript - GraphQL 对象属性应该是一个字符串列表

如何为GraphQL中的字符串数组对象属性创建架构?我希望响应看起来像这样:{name:"colors",keys:["red","blue"]}这是我的架构varkeysType=newgraphql.GraphQLObjectType({name:'keys',fields:function(){key:{type:graphql.GraphQLString}}});varColorType=newgraphql.GraphQLObjectType({name:'colors',fields:function(){return{name:{type:graphql.GraphQLS

javascript - Apollo 服务器的自定义错误对象

我正在尝试对apollo-server使用自定义错误并且我的自定义错误似乎有一个属性(code)在formatError中不可用。importExtendableErrorfrom'es6-error'exportdefaultclassMyErrorextendsExtendableError{constructor(args){letcode=Object.keys(args)[0]letmessage=Object.values(args)[0]super(message)this.code=code}}我有一个简单的错误处理程序是这样工作的:letINVALIDREQUEST=

javascript - React-Apollo,不要在组件加载时运行查询

我正在使用很棒的https://github.com/apollographql/react-apollo库,我正在尝试查看是否有比我现在做的更好的约定来将数据加载到组件中。我已经将我的组件设置为使用apolloHOC将数据加载到我的组件中,如下所示:constmainQuery=gql`querycurrentProfileData($userId:String,$communityId:String!){created:communities(id:$communityId){opportunities{submittedDateapprovalDatestatusopportun