avoid promise nestingPromise-driven animationCaching/memoizing promise resultsUsing a Wrapper PromiseAngular Promise trying WrapperCalling a promise recursivelyPromise Chaining Forgot PasswordNode.js Sequelize PromiseTypeScript based Promise/A+ compliant, awaitable promise class for Node.jsPromise implementation in PythonExtending Mojo::Promise

Is this apparent Class Action settlement a spam message?

Why escape if the_content isnt?

How to be diplomatic in refusing to write code that breaches the privacy of our users

System.debug(JSON.Serialize(o)) Not longer shows full string

How to Reset Passwords on Multiple Websites Easily?

Failed to fetch jessie backports repository

Trouble understanding the speech of overseas colleagues

Integer addition + constant, is it a group?

Large drywall patch supports

Why does indent disappear in lists?

What is paid subscription needed for in Mortal Kombat 11?

Is the destination of a commercial flight important for the pilot?

How can I get through very long and very dry, but also very useful technical documents when learning a new tool?

Increase performance creating Mandelbrot set in python

How did Doctor Strange see the winning outcome in Avengers: Infinity War?

Tiptoe or tiphoof? Adjusting words to better fit fantasy races

Is HostGator storing my password in plaintext?

Is `x >> pure y` equivalent to `liftM (const y) x`

How to run a prison with the smallest amount of guards?

Different result between scanning in Epson's "color negative film" mode and scanning in positive -> invert curve in post?

Did Dumbledore lie to Harry about how long he had James Potter's invisibility cloak when he was examining it? If so, why?

Can the discrete variable be a negative number?

Hostile work environment after whistle-blowing on coworker and our boss. What do I do?

Escape a backup date in a file name



avoid promise nesting


Promise-driven animationCaching/memoizing promise resultsUsing a Wrapper PromiseAngular Promise trying WrapperCalling a promise recursivelyPromise Chaining Forgot PasswordNode.js Sequelize PromiseTypeScript based Promise/A+ compliant, awaitable promise class for Node.jsPromise implementation in PythonExtending Mojo::Promise













0












$begingroup$


The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



The eslint linting tool raised a warning saying "avoid nesting promises". I'm not sure why it is bad to nest promises (maybe I will miss some exceptions?). How can I improve my code?



app.put('/api/v0/note/:id', (req, res) => 
const id = req.params.id;
const uid = req.user ? req.user.uid : null;
return user_can_edit_note(uid, id).then(yes =>
if (yes)
return db.collection('notes').doc(id).update(
title: req.body.title,
text: req.body.text,
author_uid: req.user ? req.user.uid : null,
updated_on: admin.firestore.Timestamp.now()
).then(() =>
return res.json(
ok: "ok"
);
);
else
return res.status(403).json(
error: "Permission Denied",
note_id: id
);

).catch((err) =>
console.error(err);
return res.status(500).json(error: String(err));
);
);








share









$endgroup$
















    0












    $begingroup$


    The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



    The eslint linting tool raised a warning saying "avoid nesting promises". I'm not sure why it is bad to nest promises (maybe I will miss some exceptions?). How can I improve my code?



    app.put('/api/v0/note/:id', (req, res) => 
    const id = req.params.id;
    const uid = req.user ? req.user.uid : null;
    return user_can_edit_note(uid, id).then(yes =>
    if (yes)
    return db.collection('notes').doc(id).update(
    title: req.body.title,
    text: req.body.text,
    author_uid: req.user ? req.user.uid : null,
    updated_on: admin.firestore.Timestamp.now()
    ).then(() =>
    return res.json(
    ok: "ok"
    );
    );
    else
    return res.status(403).json(
    error: "Permission Denied",
    note_id: id
    );

    ).catch((err) =>
    console.error(err);
    return res.status(500).json(error: String(err));
    );
    );








    share









    $endgroup$














      0












      0








      0





      $begingroup$


      The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



      The eslint linting tool raised a warning saying "avoid nesting promises". I'm not sure why it is bad to nest promises (maybe I will miss some exceptions?). How can I improve my code?



      app.put('/api/v0/note/:id', (req, res) => 
      const id = req.params.id;
      const uid = req.user ? req.user.uid : null;
      return user_can_edit_note(uid, id).then(yes =>
      if (yes)
      return db.collection('notes').doc(id).update(
      title: req.body.title,
      text: req.body.text,
      author_uid: req.user ? req.user.uid : null,
      updated_on: admin.firestore.Timestamp.now()
      ).then(() =>
      return res.json(
      ok: "ok"
      );
      );
      else
      return res.status(403).json(
      error: "Permission Denied",
      note_id: id
      );

      ).catch((err) =>
      console.error(err);
      return res.status(500).json(error: String(err));
      );
      );








      share









      $endgroup$




      The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



      The eslint linting tool raised a warning saying "avoid nesting promises". I'm not sure why it is bad to nest promises (maybe I will miss some exceptions?). How can I improve my code?



      app.put('/api/v0/note/:id', (req, res) => 
      const id = req.params.id;
      const uid = req.user ? req.user.uid : null;
      return user_can_edit_note(uid, id).then(yes =>
      if (yes)
      return db.collection('notes').doc(id).update(
      title: req.body.title,
      text: req.body.text,
      author_uid: req.user ? req.user.uid : null,
      updated_on: admin.firestore.Timestamp.now()
      ).then(() =>
      return res.json(
      ok: "ok"
      );
      );
      else
      return res.status(403).json(
      error: "Permission Denied",
      note_id: id
      );

      ).catch((err) =>
      console.error(err);
      return res.status(500).json(error: String(err));
      );
      );






      promise





      share












      share










      share



      share










      asked 6 mins ago









      Emanuele PaoliniEmanuele Paolini

      1,9991712




      1,9991712




















          0






          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          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: "196"
          ;
          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',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          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%2fcodereview.stackexchange.com%2fquestions%2f216388%2favoid-promise-nesting%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216388%2favoid-promise-nesting%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

          Why is the 'in' operator throwing an error with a string literal instead of logging false?Why can't I use switch statement on a String?Python join: why is it string.join(list) instead of list.join(string)?Multiline String Literal in C#Why does comparing strings using either '==' or 'is' sometimes produce a different result?How to initialize an array's length in javascript?How can I print literal curly-brace characters in python string and also use .format on it?Why does ++[[]][+[]]+[+[]] return the string “10”?Why is char[] preferred over String for passwords?Why does this code using random strings print “hello world”?jQuery.inArray(), how to use it right?

          बाताम इन्हें भी देखें सन्दर्भ दिक्चालन सूची1°05′00″N 104°02′0″E / 1.08333°N 104.03333°E / 1.08333; 104.033331°05′00″N 104°02′0″E / 1.08333°N 104.03333°E / 1.08333; 104.03333

          Reverse int within the 32-bit signed integer rangeReverse int within the 32-bit signed integer range: $[−2^31, 2^31 − 1]$ OptimizedCombining two 32-bit integers into one 64-bit integerDetermine if an int is within rangeLossy packing 32 bit integer to 16 bitComputing the square root of a 64-bit integerKeeping integer addition within boundsSafe multiplication of two 64-bit signed integersLeetcode 10: Regular Expression MatchingReverse the digits of an Integer“Add two numbers given in reverse order from a linked list”Reverse int within the 32-bit signed integer range: $[−2^31, 2^31 − 1]$ Optimized