0

LDAP サーバーから Meteor サーバー経由でクライアントにデータを取得しようとしています。ただし、LDAP 要求は非同期であり、メソッドは false を返し、ldap.search 関数呼び出しで収集された結果ではありません。では、データの準備が整ったときに LDAP への呼び出しを同期的に取得したり、クライアントでイベントをトリガーしたりするにはどうすればよいでしょうか?

  //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;
    }
  });

どうもありがとう。

トロス

4

1 に答える 1

6

この回答のように、あなたが望むのはMeteor先物です。This gistはその方法を説明しています。

于 2013-10-22T19:37:37.180 に答える