Unnesting Node database calls

后端 未结 5 958
半阙折子戏
半阙折子戏 2021-01-19 03:27

I have an ordinary

var express = require(\'express\')

Node express www page, using session, pug, etc as usual. My db calls

var         


        
5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-19 03:56

    Simply convert the mysql functions into promises using the nodejs standard lib util.promisify

    example:

    const { promisify } = require('util');
    
    const catsPromise = promisify(db.cats);
    const dogsPromise = promisify(db.dogs);
    const budgiesPromise = promisify(db.budgies);
    
    async function routeHandler() {
      let err = null;
    
      try {
        const cats = await catsPromise();
        const dogs = await dogsPromise();
        const budgies = await budgiesPromise();
      } catch(error) {
        err = error;
      }
    
      if (err) {
        console.log(err);
        // you should res.end() or res.render(someErrorPage) here
        // failure to do so will leave the request open
      } else {
        res.render('bigScreen.pug', {
          'cats' : cats,
          'k9s': dogs,
          'budgies': budgies,
          'pretty' : true
        });
      }
    }
    

提交回复
热议问题