1
的Hello World示例如下:如何从需要返回语句的GraphQL解析器中调用异步node.js函数?创建一个简单的GraphQL实现提供<a href="http://graphql.org/graphql-js" rel="nofollow noreferrer">graphql.org/graphql-js</a>
var { graphql, buildSchema } = require('graphql');
// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
type Query {
hello: String
}
`);
// The root provides a resolver function for each API endpoint
var root = {
hello:() => {
return 'Hello World!';
}
};
// Run the GraphQL query '{ hello }' and print out the response
graphql(schema, '{ hello }', root).then((response) => {
console.log(response);
});
我试图运行变压器内的异步函数,例如数据库调用,我不能似乎弄清楚如何使这项工作:
我想要做的事:
var { graphql, buildSchema } = require('graphql');
// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
type Query {
data: String
}
`);
// The root provides a resolver function for each API endpoint
var root = {
data:() => {
getData((data) => {
return data; // Returns from callback, instead of from resolver
}
}
};
// Run the GraphQL query '{ data }' and print out the response
graphql(schema, '{ data }', root).then((response) => {
console.log(response);
});
我试图用承诺,但似乎没有要逃避的一种方式承诺没有ent进行回调。我也尝试过用各种方法来封装异步函数,强制它是同步的,但最终不得不从异步函数中返回一个值,同样的问题。我觉得这不能太复杂,我的意思是GraphQL-JS是由Facebook编写的。