2013-10-22 54 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

謝謝你指出我的答案。這正是我所期待的。 –

相關問題