2
我在GraphQL中有一個基於GeoJSON的API,我試圖在上進行突變。我正在使用graphql-geojson中的一些類型。輸入類型和突變的定義如下:具有自定義標量類型的GraphQL.js突變
# ... from graphql-geojson ...
var CoordinatesScalar = new ScalarType({
name: 'GeoJSONCoordinates',
description: 'A (multidimensional) set of coordinates following x, y, z order.',
serialize: coerceCoordinates,
parseValue: coerceCoordinates,
parseLiteral: parseCoordinates})
# ... schema.js ...
var waypointInputType = new GraphQLInputObjectType({
name: 'WaypointInput',
fields: {... schema.js ...]
var waypointInputType = new GraphQLInputObjectType({
name: 'WaypointInput',
fields: {
type: {type: GraphQLString},
coordinates: {type: CoordinatesScalar}
}
});
var missionInputType = new GraphQLInputObjectType({
name: 'MissionInput',
fields:() => ({
waypoints: {type: waypointInputType},
max_groundspeed: {type: GraphQLFloat}
})
});
var createMission = {
type: missionType,
description: 'Create a new mission.',
args: {
mission: {type: missionInputType}
},
resolve(value, {mission}) {
return models.Mission.create(mission).then(mission => mission);
}
};
# ... in schema definition ...
mutation: new GraphQLObjectType({
name: 'RootMutationType',
fields: {
createMission
}
})
在graphiql,我喜歡發行
mutation {
createMission(mission: {
waypoints: {
type: "LineString",
coordinates: [[1, 2], [3, 4]]
}
}) {
id
}
}
的突變,以節省一些新的座標和查詢所創建的任務ID。但是,graphql會引發一個錯誤Argument mission has invalid value [...] coordinates: expected type GeoJSONCoordinates, found [[1, 2], [3, 4]]
。我可以在座標中放入任意字符串,但嵌套數組似乎不起作用。隨着行情嵌套數組,我得到一個字符串回來時,我查詢:
{
"waypoints": {
"type": "LineString",
"bbox": null,
"coordinates": "[[1, 2], [3, 3]]"
}
}
我可以用CoordinatesScalar爲輸入型,或者我需要定義CoordinatesScalar可以專門解析了輸入的輸入類型?
我遇到的問題是,我使用的第三方標量,序列化/反序列化奇怪(文本到數據庫,但沒有進入JSON的出路) - 您的答案嚴格來說是正確的,但它是一個不同的問題。雖然謝謝! –