我真的对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
我收到以下错误:
我什至不知道我想做的事情(从节点内部调用查询)是否可以完成。任何建议将不胜感激。
感谢
答案 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。