2017-06-15 88 views
0

我非常喜歡JavaScript和NodeJS領域的新手。我在Java和C#方面都有很多經驗,但這對我來說都很新穎。使用promise的GraphQL解析

作爲一個POC,我試圖用GraphQL封裝一個salesforce調用。由於對salesforce的調用是異步的,我想在定義模式和基礎查詢之間的綁定時返回對GraphQL的承諾。

但是,當我這樣做時,我收到消息「Expected Iterable,但沒有爲字段Query.getAccounts找到一個。」

這是我絕對可怕的代碼:

conn.login('username', 'password' + 'security-token', function(err, userInfo) { 
    if (err) { 
    console.log(err); 
    console.log("Cannot login to Salesforce"); 
    } else { 
    var root = { 
     getAccounts: function ({offset, limit}) { 
     return new Promise(function(resolve, reject) { 
      conn.query("SELECT Id, Name FROM Account", function(err, result) { 
      if (err) { 
       reject(); 
      } 
      resolve(result); 
      }); 
     }); 
     } 
    } 


    var app = express(); 
    app.use('/graphql', graphqlHTTP({ 
     schema: schema, 
     rootValue: root, 
     graphiql: true, 
    })); 
    app.listen(4000); 
    console.log('Running a GraphQL API server at localhost:4000/graphql'); 
    } 
}); 

我應該使用阿波羅?

回答

0

這裏的問題是Salesforce的響應不是列表格式。所以我必須鏈接另一個承諾,將我關心的實際數據從響應中提取出來。

基本上,這是來自GraphQL的誤導消息。