首页 文章

如何在Graphql解析函数中从回调中返回值?

提问于
浏览
2

如何从回调函数返回值并将其传递给Graphql中的resolve函数?

这是显示概念的虚拟代码:

此函数运行sql查询:

function runQuery(query, cb){
   ....
   var value = "Something";
   cb(null, value);
}

这需要从回调函数传递它的值来解析graphql中的函数:

function getTitle() {
   return runQuery("...", function(err, value){ 
             return value; 
          });
}

Graphql schema:

var SampleType = new GraphQLObjectType({
  name: 'Sample',
  fields: () => ({
    title: { type: GraphQLString },
  }),
});


query: new GraphQLObjectType({
    name: 'Query',
    fields: () => ({
      sample: {
        type: SampleType,
        resolve: () => getTitle(),
      },
    }),
  }),

1 回答

  • 1

    你可以利用promises和 async 来实现这一目标 .

    async function getTitle() {
      const queryResult = await runQuery("...");
    
      // ...
      // Do post-query stuff here that you currently have in your callback
      // ...
    
      return queryResult
    }
    
    async function runQuery() {
      const value = 'something';
      // ...
      return value;
    }
    

    节点fully supports async/await as of 7.10.0 . 如果您在浏览器中或被锁定到较低版本的节点,请使用TypeScript或Babel .

相关问题