How to use a prisma graphql subscription in node app









up vote
0
down vote

favorite












I am following this guide. I am trying to listen to a graphQL subscription in my node app. I am having a lot of trouble implementing that subscription. I have a tried a few different ways, listed below, none of them are working.



// converted to rxjs observables
from(PrismaClient.$subscribe.priority(
mutation_in: "CREATED"
)).subscribe(
(next) =>
console.log("next", next);
,
() =>
console.log("error");
,
() =>
console.log("complete");

);



// as promise
PrismaClient.$subscribe.priority(
mutation_in: "CREATED"
).then(
(next) =>
console.log("next", next);

);



Both of these just return in the next:



 next: [Function: next],
return: [Function: return],
throw: [Function: throw],
'@@asyncIterator': [Function]


I would expect it to return the priority that was created any time a new one is created. However, it only returns one time and immediately completes and returns that object i listed above.



I understand this has something to do with it returning back an Promise<AsyncIterator<...>>, but i am not sure how to solve this issue.



How do i create a prisma graphql subscription in a node app using the prisma-client? I would also, like to convert this to rxjs instead of using promises. I just prefer Observables.










share|improve this question

























    up vote
    0
    down vote

    favorite












    I am following this guide. I am trying to listen to a graphQL subscription in my node app. I am having a lot of trouble implementing that subscription. I have a tried a few different ways, listed below, none of them are working.



    // converted to rxjs observables
    from(PrismaClient.$subscribe.priority(
    mutation_in: "CREATED"
    )).subscribe(
    (next) =>
    console.log("next", next);
    ,
    () =>
    console.log("error");
    ,
    () =>
    console.log("complete");

    );



    // as promise
    PrismaClient.$subscribe.priority(
    mutation_in: "CREATED"
    ).then(
    (next) =>
    console.log("next", next);

    );



    Both of these just return in the next:



     next: [Function: next],
    return: [Function: return],
    throw: [Function: throw],
    '@@asyncIterator': [Function]


    I would expect it to return the priority that was created any time a new one is created. However, it only returns one time and immediately completes and returns that object i listed above.



    I understand this has something to do with it returning back an Promise<AsyncIterator<...>>, but i am not sure how to solve this issue.



    How do i create a prisma graphql subscription in a node app using the prisma-client? I would also, like to convert this to rxjs instead of using promises. I just prefer Observables.










    share|improve this question























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I am following this guide. I am trying to listen to a graphQL subscription in my node app. I am having a lot of trouble implementing that subscription. I have a tried a few different ways, listed below, none of them are working.



      // converted to rxjs observables
      from(PrismaClient.$subscribe.priority(
      mutation_in: "CREATED"
      )).subscribe(
      (next) =>
      console.log("next", next);
      ,
      () =>
      console.log("error");
      ,
      () =>
      console.log("complete");

      );



      // as promise
      PrismaClient.$subscribe.priority(
      mutation_in: "CREATED"
      ).then(
      (next) =>
      console.log("next", next);

      );



      Both of these just return in the next:



       next: [Function: next],
      return: [Function: return],
      throw: [Function: throw],
      '@@asyncIterator': [Function]


      I would expect it to return the priority that was created any time a new one is created. However, it only returns one time and immediately completes and returns that object i listed above.



      I understand this has something to do with it returning back an Promise<AsyncIterator<...>>, but i am not sure how to solve this issue.



      How do i create a prisma graphql subscription in a node app using the prisma-client? I would also, like to convert this to rxjs instead of using promises. I just prefer Observables.










      share|improve this question













      I am following this guide. I am trying to listen to a graphQL subscription in my node app. I am having a lot of trouble implementing that subscription. I have a tried a few different ways, listed below, none of them are working.



      // converted to rxjs observables
      from(PrismaClient.$subscribe.priority(
      mutation_in: "CREATED"
      )).subscribe(
      (next) =>
      console.log("next", next);
      ,
      () =>
      console.log("error");
      ,
      () =>
      console.log("complete");

      );



      // as promise
      PrismaClient.$subscribe.priority(
      mutation_in: "CREATED"
      ).then(
      (next) =>
      console.log("next", next);

      );



      Both of these just return in the next:



       next: [Function: next],
      return: [Function: return],
      throw: [Function: throw],
      '@@asyncIterator': [Function]


      I would expect it to return the priority that was created any time a new one is created. However, it only returns one time and immediately completes and returns that object i listed above.



      I understand this has something to do with it returning back an Promise<AsyncIterator<...>>, but i am not sure how to solve this issue.



      How do i create a prisma graphql subscription in a node app using the prisma-client? I would also, like to convert this to rxjs instead of using promises. I just prefer Observables.







      typescript rxjs graphql prisma async-iterator






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 8 at 19:55









      prolink007

      20.1k1697158




      20.1k1697158






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          Here's a suggestion with Promises and async/await:



          const main = async () => 
          const subscription = await PrismaClient.$subscribe.priority(
          mutation_in: 'CREATED',
          )
          handleSubscription(subscription)


          const handleSubscription = async (subscription) =>
          const result = await subscription.next()
          console.log('do stuff with', result.value)

          if (!result.done)
          console.log('handle again')
          handleSubscription(subscription)

          else
          console.log('done')



          main().catch(e => console.error(e))





          share|improve this answer




















          • This works, but is there a way to convert this to Observables?
            – prolink007
            Nov 9 at 15:18










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53215215%2fhow-to-use-a-prisma-graphql-subscription-in-node-app%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          1
          down vote



          accepted










          Here's a suggestion with Promises and async/await:



          const main = async () => 
          const subscription = await PrismaClient.$subscribe.priority(
          mutation_in: 'CREATED',
          )
          handleSubscription(subscription)


          const handleSubscription = async (subscription) =>
          const result = await subscription.next()
          console.log('do stuff with', result.value)

          if (!result.done)
          console.log('handle again')
          handleSubscription(subscription)

          else
          console.log('done')



          main().catch(e => console.error(e))





          share|improve this answer




















          • This works, but is there a way to convert this to Observables?
            – prolink007
            Nov 9 at 15:18














          up vote
          1
          down vote



          accepted










          Here's a suggestion with Promises and async/await:



          const main = async () => 
          const subscription = await PrismaClient.$subscribe.priority(
          mutation_in: 'CREATED',
          )
          handleSubscription(subscription)


          const handleSubscription = async (subscription) =>
          const result = await subscription.next()
          console.log('do stuff with', result.value)

          if (!result.done)
          console.log('handle again')
          handleSubscription(subscription)

          else
          console.log('done')



          main().catch(e => console.error(e))





          share|improve this answer




















          • This works, but is there a way to convert this to Observables?
            – prolink007
            Nov 9 at 15:18












          up vote
          1
          down vote



          accepted







          up vote
          1
          down vote



          accepted






          Here's a suggestion with Promises and async/await:



          const main = async () => 
          const subscription = await PrismaClient.$subscribe.priority(
          mutation_in: 'CREATED',
          )
          handleSubscription(subscription)


          const handleSubscription = async (subscription) =>
          const result = await subscription.next()
          console.log('do stuff with', result.value)

          if (!result.done)
          console.log('handle again')
          handleSubscription(subscription)

          else
          console.log('done')



          main().catch(e => console.error(e))





          share|improve this answer












          Here's a suggestion with Promises and async/await:



          const main = async () => 
          const subscription = await PrismaClient.$subscribe.priority(
          mutation_in: 'CREATED',
          )
          handleSubscription(subscription)


          const handleSubscription = async (subscription) =>
          const result = await subscription.next()
          console.log('do stuff with', result.value)

          if (!result.done)
          console.log('handle again')
          handleSubscription(subscription)

          else
          console.log('done')



          main().catch(e => console.error(e))






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 9 at 10:07









          nuno

          384




          384











          • This works, but is there a way to convert this to Observables?
            – prolink007
            Nov 9 at 15:18
















          • This works, but is there a way to convert this to Observables?
            – prolink007
            Nov 9 at 15:18















          This works, but is there a way to convert this to Observables?
          – prolink007
          Nov 9 at 15:18




          This works, but is there a way to convert this to Observables?
          – prolink007
          Nov 9 at 15:18

















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53215215%2fhow-to-use-a-prisma-graphql-subscription-in-node-app%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

          Edmonton

          Crossroads (UK TV series)