javascript - 如何从 Graphql 解析函数中的回调返回值?

标签 javascript graphql relayjs relay graphql-js

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

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

此函数运行 sql 查询:

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

这从回调函数中获取值并将其传递给 graphql 中的 resolve 函数:

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

Graphql 架构:

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


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

最佳答案

您可以使用 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。

关于javascript - 如何从 Graphql 解析函数中的回调返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294021/

相关文章:

javascript - 在(CSS-transform)点旋转之前计算坐标

GraphQL - 如何在查询多个突变期间检索先前突变的 ID

reactjs - React Relay 获取列表

javascript - 部分 View 中的 angularjs Controller 脚本不起作用

javascript - 如何将 javascript 变量值传递给 jsp 值

node.js - 错误 : request entity too large in graphql services of node

javascript - 继电器 : How to merge instead of override queries in nested routes?

reactjs - 错误: field type must be Input Type - cannot pass qlType into mutation

JavaScript、获取、API

reactjs - `updater` 无法与 Relay Modern 配合使用,因为 `ConnectionHandler.getConnection()` 返回 `undefined`