Hva må jeg tilbake i en GraphQL Mutasjon med Sequelize?

stemmer
4

Jeg prøver å implementere en GraphQL server som bruker Sequelize i back-end (for å jobbe med MSSQL bak kulissene). Og jeg har en spørring som fungerer perfekt (hente data fra en enkelt SQL tabell) som forventet.

Men da jeg satt opp en mutasjon for samme skjema, og når jeg kjører mutasjon i GraphiQL jeg synes at, mens det gjør utføre ting inni mutasjonen beslutning funksjon (som er å opprette en forekomst av min Sequelize skjema), det gjør ikke returnere min objekt tilbake til meg.

skriv

Nå, jeg finne det er fordi min Sequelize .createfunksjonen returnerer et løfte og besluttsomhet kan ikke håndtere det?

Her er hva jeg har så langt:

resolve(_,args){
  Forecast.create({
    bunit: args.bunit,
    season: args.season,
    position: args.position,
    currency: args.currency,
    settle_date: new Date(args.settle_date),
    reference: args.reference
  }).then(forecast => {
    return forecast;
  }).catch(err => {
    console.error(err);
    return err;
  });
}

Jeg kan ikke finne noen klar forklaring eller tutorial som viser meg hvordan å konstruere hva besluttsomheten funksjonen må komme tilbake når jeg gjør noe asynkront. Eller jeg bare ikke forstå det, som også er ganske sannsynlig.

Publisert på 05/02/2016 klokken 11:15
kilden bruker
På andre språk...                            


2 svar

stemmer
0

@ Adam forslag ovenfor jobbet i dette tilfellet. Jeg er overrasket over at vi ikke trenger å lese løftet den .createmetoden samtaler, men det ser ut til å fungere helt fint på den måten.

resolve(_,args){
      return Forecast.create({
        bunit: args.bunit,
        season: args.season,
        position: args.position,
        currency: args.currency,
        settle_date: new Date(args.settle_date),
        reference: args.reference
      });
      // .then(forecast => {
      //   console.error(err);
      //   //return forecast;
      // }).catch(err => {
      //   console.error(err);
      //   //return err;
      // });

      //return newForecast;
    }
  }

skriv bildebeskrivelse her

Takk!

Svarte 05/02/2016 kl. 12:43
kilden bruker

stemmer
0

Fjerne thenog catchimplementering fungerer, men bør ikke gjøres, har du støtt på noen løfter then-kjeden. Hver then(eller fangst) returnseksjon endrer den returnerte verdi av resolveren.

Derfor legger en returnForecastog returnerer i thenog catcher den rette tilnærmingen

resolve(_,args){
      return Forecast.create({
        bunit: args.bunit,
        season: args.season,
        position: args.position,
        currency: args.currency,
        settle_date: new Date(args.settle_date),
        reference: args.reference
      });
       .then(forecast => {
         console.error(err);
         return forecast;
       }).catch(err => {
         console.error(err);
         return err;
       });

      return newForecast;
    }
  }
Svarte 22/12/2016 kl. 11:42
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more