2013-10-22 55 views
0

我尝试通过Meteor服务器从LDAP服务器获取数据到客户端。 但LDAP请求是异步的,并且该方法返回false,而不是在ldap.search函数调用中收集的结果。那么,如何在数据准备好的情况下同步调用ldap或触发客户端上的事件?Meteor.methods:通过内部回调将数据返回给客户端

//defined on serverside 
    Meteor.methods({ 
    searchPerson: function(account){ 
     var data = null; 
     var LDAP = Npm.require('LDAP'); 
     var ldap = new LDAP({uri: 'ldaps://ldap-server', version: 3}); 

     var search_options = { 
     base: 'ou=xxx,dc=yyy,dc=zzz', 
     scope: '1', 
     filter: '(uid='+account+')', 
     attrs: 'surname, givenname, mail' 
     }; 
     var bind_options = { 
     binddn: 'cn=aaa,ou=bbb,dc=ccc,dc=ddd', 
     password: 'password' 
     }; 

     ldap.open(function(err) { 
     if (err) { 
      throw new Meteor.Error('Can not connect'); 
     } 
     ldap.simpleBind(bind_options, function(err){ 
      if (err){ 
      throw new Meteor.Error('Can not bind'); 
      } 
      ldap.search(search_options, function(err, data){ 
      if (err){ 
       throw new Meteor.Error('Error occured'); 
      } 
      return data; 
      }); 
     }); 
     }); 
     return false; 
    } 
    }); 

非常感谢。

torrofs

回答

6

你想要的是流星期货,如this answerThis gist解释如何。

+0

谢谢你指出我的答案。这正是我所期待的。 –

相关问题