带有express的Res.render数组

时间:2014-06-05 09:27:55

标签: arrays node.js render

我想使用ejs模板引擎重新显示一个网页,该引擎必须显示几个关于用户的信息。

在这个项目中,我有:

  • 包含所有de group名称的名为groupTab的组数组:var groupTab = [" categ1"," categ2"," categ3"]

  • 使用npm包activedirectory的活动目录连接,该目录连接能够使用以下方法从一个组获取用户:getUsersForGroup。

使用以下代码,我可以显示每个组中的所有用户:

for(var i = 0 ; i<groupTab.length; i ++){
  ad.getUsersForGroup(groupTab[i], function(err,users){
    if(err) console.log(JSON.stringify(err);
    else{
      console.log(JSON.stringify(users); //This displays all the users that are in categ1            categ 2 and categ 3 on the console 
    }
  }
}

问题在于,我无法返回此阵列客户端,而且我完全卡住了。我使用getUsersForGroup的回调测试了一些函数,但是我无法管理打印这个数组。

我想要做的就是那些函数调用getUsersforGroup:

app.get('/', function(req,res){
    afunction(err,users){
      res.render('index.ejs',{users: users});
   }
});

我该怎么做?

2 个答案:

答案 0 :(得分:0)

Haven没有对它进行测试,但是这样的事情应该可以解决问题。

function getUsers (next) {
  var allUsers = [],
  i;
  for (i = 0 ; i < groupTab.length; i++) {
    ad.getUsersForGroup(groupTab[i], function(err, users){
      if (err) {
        console.log(JSON.stringify(err);
      }
      else {
        allUsers = allUsers.concat(users);
      }

      if (i === groupTab.length - 1) {
          next(allUsers);
      }
    }
  }
}

app.get('/', function (req,res) {
    getUsers(function (users) {
      res.render('index.ejs',{users: users});
    });
});

答案 1 :(得分:0)

这个技巧对我有用

function getUsers (next) {
  var allUsers = [],
  var a=0;
  for (var i = 0 ; i < groupTab.length; i++) {
    ad.getUsersForGroup(groupTab[i], function(err, users){
      if (err) {
        console.log(JSON.stringify(err);
      }
      else {
        allUsers = allUsers.concat(users);
        a++
      }

      if (a == groupTab.length) {
          next(allUsers);
      }
    }
  }
}

app.get('/', function (req,res) {
    getUsers(function (users) {
      res.render('index.ejs',{users: users});
    });
});