2017-05-31 113 views
1

如何從回調函數返回值並將其傳遞給Graphql中的解析函數?如何在Graphql解析函數中從回調中返回值?

這裏的虛擬代碼來顯示概念:

此函數運行SQL查詢:

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

這需要從回調函數的值傳遞它graphql解決功能:

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(), 
     }, 
    }), 
    }), 

回答

0

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

+1

謝謝..它工作:) – Shaz