graphql:必须提供Source。收到:{种类:“文档,定义...}

时间:2019-06-16 22:47:15

标签: node.js graphql resolver

我真的对Graphql陌生(实际上只是在昨天)。我正在“玩耍”并尝试生态系统的各种工具(apollo服务器,graphql.js ... ect)。

为了进行实验,我尝试从nodejs内(而不是从浏览器中的客户端,例如React应用程序)调用查询

首先,这是我的简单模式以及解析器:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)".

使用b'!\xfc\x08\x00 \xbe\xb8_*\xfft\x0e\xd2r\xdc\xf1\xc8m\xc2|\xc8\x11\xb5\x03\x1a\xb8)v\xc4\x02\x0b0\xe6w,{\x0f\xe4\xbc\x03\x96``\xb5\xd1\xa6szi\xa2\x87>b\xb0\x85\xee\xe4X\xfe\x17\xadV\xc8/\x92\xf9\x1f\x02\x97}\xb0\xc9\x98\xa8-\x08\x1c\xca\x10L\xdff \xb8\x90 \x15\x19U\xc2\xae<\xec6[\xe4\\x84\xf7g\x88\xf1)\x13\xea\xf6\xae\x05\xa8\x0c\xf1\x02\xf7\xa3\xdb6\xe7N\xb7C\xb86E\x19(\x08\x0fsrZ\xad\x13\x85\x07 \x18\x0f\xc7\xeb\x0e\x83\xf0\xb9;\xdb\xbc\x0c\xc2\x8f\x8bu:<\x96\xce\x977xn\x14Q\xfc$\x1f\xc6\xd1\x18\xcb\xfc\x0f:\xf9\xd4t\x87\xeb\xa5\x0eq\x7fVx\xadM}/\x10Q\xd3\x06z\x12\x05\x1a\xed \xbd\xf7\x8d\x0b1\x05o\x1b\x10b\xaaB\xc67\x7f\x9e\x9b\x93B\xf0\xa2\x1b=7\xf7o\xd0\xe3\x0b\x905C\x14\x98\x9d\xbf@\x12\x13>\xb1/\x10f?\x8cLH6\xe6\xcaX\xcb\x99\xb4\x90\x8a\x02\x10\xf6\xc1\xe3\n\xd7\xb5\x9f:#i\xf8\x8b\x96\xb2\xbb\x9cG\x1b\xd5($\xfd!>\x95\x9e\x94\xff\xff\xff\x07' 函数,使用类型和解析器创建一个var geoStates = (from gs in QBEntities.GeoStates select new { gs.GEOID, gs.GEO_NAME, SpatialTypeName = gs.GEO_OBJECT.SpatialTypeName, gs.JSON_GEOMETRY }).ToList(); _MapData.features = (from gs in geoStates select new MapDataRecord { properties = new MapDataRecordProperties { GEOID = gs.GEOID, GEO_NAME = gs.GEO_NAME }, geometry = SetGeoJsonGeography(gs.SpatialTypeName, gs.JSON_GEOMETRY) }).ToList(); 对象,并将该架构导出到apollo服务器应用程序中。到目前为止,一切正常。

现在在此stackoverflow suggested solution之后,我创建了一个帮助器函数,该函数应允许我调用在架构中定义的查询,如下所示:

export const mySchema = gql`
   type User {
      id: ID!
      name:  
      surname: String
   }

   # root query has been defined in another file
   extend type Query {
      users: [User]
      test: [User]
   }
` 
export const myResolvers = {
   users: () => [ __array_of_users__ ],
   test: () => /* this is where I would like to re-invoke the 'users query'
}

使用此帮助器功能,我的解析器将变为:

makeExecutableSchema

但是在操场上,当我尝试查询时:

schema

我收到以下错误:

enter image description here

我什至不知道我想做的事情(从节点内部调用查询)是否可以完成。任何建议将不胜感激。

感谢

1 个答案:

答案 0 :(得分:0)

graphql-tag接收一个字符串并将其解析为DocumentNode对象。这实际上与将字符串传递给parse函数相同。 graphql模块导出的某些函数,例如execute,希望在DocumentNode对象中传递,而graphql函数则不会。如签名所示,应该仅将纯字符串作为请求传递:

graphql(
  schema: GraphQLSchema,
  requestString: string,
  rootValue?: ?any,
  contextValue?: ?any,
  variableValues?: ?{[key: string]: any},
  operationName?: ?string
): Promise<GraphQLResult>

因此,只需删除gql标签。您会看到(不完整的)API参考here