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;
}
});
どうもありがとう。
トロス