使用promise的GraphQL解析

问题描述:

我非常喜欢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'); 
    } 
}); 

我应该使用阿波罗?

这里的问题是Salesforce的响应不是列表格式。所以我必须链接另一个承诺,将我关心的实际数据从响应中提取出来。

基本上,这是来自GraphQL的误导消息。