开发者社区> 问答> 正文

node如何在get('/')方法中执行两次查询并render两个数据到页面中?

一个页面,页面中有两个列表:可用陪聊和不可用陪聊,这两种数据分别存储在redis的peiliaos和upeiliaos两个List中,因为查询返回的数据只能在回调函数里处理,所以我只能查询一个列表中的数据,代码如下:

app.route('/').get(function (req, res, next) {
    redisDB.lrange("peiliaos", 0, -1, function (err, data) {
      if (err) {
        console.log('fail to get name' + err);
        redisDB.quit();
        return null;
      }
      if (data === null) {
        console.log('no data');
      }
 
      var peiliaos = [];
      for (var x in data) {
        var peiliao = JSON.parse(data[x]);
        peiliaos.push(peiliao);
      }
      var renderData = {
        title : '闷子聊天模拟器',
        peiliaos : peiliaos,
        testdata : 'this is test data'
      };
 
      res.render('index2', renderData);
    });
  });

想查不可用陪聊的时候,由于执行是异步的,导致可用陪聊的数据无法赋给外层的变量给后续的渲染逻辑,我不想把不可用陪聊的查询逻辑嵌套在可用陪聊的查询函数里,这样如果查询的数据变多,嵌套就太多了,请问有没有什么好的解决办法?

展开
收起
落地花开啦 2016-02-20 18:46:31 3132 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    做做修改

    redisDB.multi([
          ['lrange','peiliaos',0, -1],
          ['llen','uPeiliaos']
          ]).exec(function (err, replies) {
            if (err) {
              console.log(err);
              return false;
            }
           console.log('rep0:----->' + replies[0]);
           console.log('rep1:----->' + replies[1]);
        });
    2019-07-17 18:45:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
探究 Node.js 的服务端之路 立即下载
个推微服务实践 基于OpenResty 和Node.js 立即下载
沪江基于Node.js大规模应用实践 立即下载