2017-06-15 4 views
0

Ich bin sehr ein Neuling im Bereich JavaScript und NodeJS. Ich habe viel Erfahrung in Java und C#, aber das ist alles ziemlich neu für mich.GraphQL Auflösung mit Versprechen

Als POC versuche ich einen Salesforce-Aufruf mit GraphQL zu umbrechen. Da der Aufruf von salesforce async ist, möchte ich ein Versprechen an GraphQL zurückgeben, wenn ich die Bindungen zwischen dem Schema und der zugrunde liegenden Abfrage definiere.

Wenn ich dies jedoch, bekomme ich die Meldung "Erwartete Iterable, aber nicht für das Feld Query.getAccounts gefunden."

Hier ist mein absolut schrecklich Code:

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'); 
    } 
}); 

Soll ich mit Apollo werden?

Antwort

0

Das Problem hier war, dass die Antwort von Salesforce nicht in einem Listenformat war. Also musste ich ein weiteres Versprechen einholen, um die tatsächlichen Daten, die mir wichtig waren, aus der Antwort zu ziehen.

Grundsätzlich ist es eine irreführende Nachricht von GraphQL.

Verwandte Themen