2017-06-15 10 views
0

JavaScriptとNodeJSの分野では非常に初心です。私はJavaとC#の両方で多くの経験を持っていますが、これは全く新しいものです。約束事を使用したGraphQL解決

POCとして、私はGraphforceでsalesforce呼び出しをラップしようとしています。 salesforceの呼び出しは非同期なので、スキーマと基礎となるクエリとの間のバインディングを定義するときに、私はGraphQLに約束を返す必要があります。

しかし、私は「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からの誤解を招くメッセージです。

関連する問題