我得到了这个查询,我试图用reason graphql_ppx库来测试。code gist
这是编辑器类型注释的屏幕截图:

使用@mhallin/graphql_ppx库,我设置了以下查询:
module FilmQuery = [%graphql
{|
{
allFilms {
films {
id
title
releaseDate
}
}
}
|}
];
exception Graphql_error(string);
/* Construct a "packaged" query; FilmQuery takes no arguments: */
let filmQuery = FilmQuery.make();
/* Send this query string to the server */
let query = filmQuery##query // type string当我将查询发送到服务器时,我得到了以下错误,它返回以下错误。
{ errors: [ { message: 'Must provide query string.' } ] }但是,如果您查询(Js.log),您会看到它被构造为which works on https://swapi.apis.guru
query films($first: Int) {
allFilms(first: $first) {
films {
id
title
releaseDate
}
}
}如果你使用Js.log(filmQuery),你会得到:
{ query: 'query {\nallFilms {\nfilms {\nid \ntitle \nreleaseDate \n}\n}\n}',变量: null,parse: Function: parse }
如果您在Altair中运行相同的查询,并检查devtools网络选项卡中发送的查询,您将看到:
{"query":" query films($first: Int) {\n allFilms(first: $first) {\n films {\n id\n title\n releaseDate\n }\n }\n }\n","variables":{}}编辑器被提供此类型错误:"- error bucklescript this has type: string但某处需要: Js.t({.. query : string,variables : Js.Json.t }) string“
如何解析此承诺/单位类型?谢谢。
所以新的问题是:为什么sendQuery()函数不能识别filmQuery##parse键?
发布于 2018-02-27 21:47:52
您的sendQuery方法需要一个从FilmQuery.make()返回的类型,但您传递给它的只是query属性,这是一个string。
您可以通过将filmQuery作为参数传递到sendQuery中来修复此问题,而不仅仅是通过query变量引用的filmQuery中的query属性。
https://stackoverflow.com/questions/48974908
复制相似问题