GraphQL和Relay的概念

时间:2016-04-01 21:35:54

标签: node.js go reactjs graphql relay

我正在尝试在System.BadImageFormatException was unhandled by user code FileName=IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208 FusionLog==== Pre-bind state information === LOG: DisplayName = IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208 Fully-specified) LOG: Appbase = file:///C:/Users/JOlivas/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/ LOG: Initial PrivatePath = NULL Calling assembly : (Unknown). === LOG: This bind starts in default load context. LOG: No application configuration file found. LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Post-policy reference: IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208 LOG: Fusion is hosted. Check host about this assembly. LOG: Try host assembly store with assembly ibm.data.db2, version=9.7.4.4, culture=neutral, publickeytoken=7c307b91aa13d208, processorarchitecture=x86. LOG: Try host assembly store with assembly ibm.data.db2, version=9.7.4.4, culture=neutral, publickeytoken=7c307b91aa13d208, processorarchitecture=msil. LOG: Try host assembly store with assembly ibm.data.db2, version=9.7.4.4, culture=neutral, publickeytoken=7c307b91aa13d208. WRN: Host assembly store does not contain this assembly. LOG: Attempting download of new URL file:///C:/Users/JOlivas/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/IBM.Data.DB2.DLL. ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated. HResult=-2147024885 Message=Could not load file or assembly 'IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208' or one of its dependencies. An attempt was made to load a program with an incorrect format. Source=EntityFramework.IBMDataServer StackTrace: at IBM.Data.Entity.Storage.Internal.Db2SqlConnection.CreateDbConnection() at Microsoft.Data.Entity.Internal.LazyRef`1.get_Value() at Microsoft.Data.Entity.Storage.RelationalConnection.Open() at Microsoft.Data.Entity.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.First[TSource](IEnumerable`1 source) at lambda_method(Closure , QueryContext ) at Microsoft.Data.Entity.Query.Internal.QueryCompiler.<>c__DisplayClass18_1`1.<CompileQuery>b__1(QueryContext qc) at Microsoft.Data.Entity.Query.Internal.QueryCompiler.Execute[TResult](Expression query) at Microsoft.Data.Entity.Query.Internal.EntityQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.First[TSource](IQueryable`1 source) at DB2.Models.Users.UserRepository.pass() in D:\Proyectos\MVC\NSEL\DB2\src\DB2\Models\Users\UserRepository.cs:line 16 at DB2.Controllers.HomeController.test() in D:\Proyectos\MVC\NSEL\DB2\src\DB2\Controllers\HomeController.cs:line 33 InnerException: 中构建GraphQL endpoints

我一直关注这些博客Learn Golang + GraphQL + Relay #1,以便在golang中实施graphQl,并且我已经成功构建了golang的简单端点。

我几乎没有什么概念可供使用,因为如何使用GraphQL构建pagination个端点,  还有像

这样的方法
graphQl

Introducing Relay and GraphQL

因为,我来自//How to build endpoints for fetching data from this query friends.first(1){ cursor, node { name } } //or this query friends.last(1){ cursor, node { name } } 背景这个Angular概念对我来说仍然很混乱。中继如何促进客户端和服务器之间的通信。

请使用Node或使这些概念更清晰的任何内容提供一些示例

1 个答案:

答案 0 :(得分:4)

分页从来都不是一个简单的问题,也不是GraphQL明确解决的问题。 GraphQL提供了一个数据获取框架,该框架如何用于执行事务(如分页)取决于开发人员。

Relay团队已尝试使用GraphQL的游标连接specification标准化分页。游标连接规范不是Relay独有的,可以与Angular一起使用,规范的主要目标是提供一种标准化的方法来处理来自GraphQL服务器的大型集合。关于此规范的主要注意事项是,每个对象都有一个关联的游标。此关联游标允许客户端从集合中的任何点恢复分页。

如果您对实施中继规范感兴趣,我建议您阅读Sashko Stubailo Understanding pagination: REST, GraphQL, and Relay,在那里他解释了中继连接规范背后的动机,并解释了如何实现它。

要查看运行中的连接规范,请查看在GraphQL中实现中继规范的示例SWAPI GraphQL API。我鼓励您打开文档窗口并浏览PeopleConnection。请注意他们如何实现edgespeople字段。

如果游标分页过于复杂而无法使用/实现,则可以始终为GraphQL API公开传统的限制/偏移分页。界面可能看起来像这样:

{
  friends(limit: 5, offset: 20) {
    name
  }
}

最后,您提供的查询来自GraphQL的早期技术预览,并且实际上并不符合规范(source)。更合适的查询(如Hafiz所述)将是:

{
  friends(first: 1) {
    cursor
    node {
      name
    }
  }
}

React Europe 2015有两个很棒的演讲,我也建议你观看更多关于没有接力的GraphQL的话题。