javascript - Meteor.methods : return data to client from internal callbacks

标签 javascript asynchronous meteor

我尝试通过 Meteor 服务器从 LDAP 服务器获取数据到客户端。 但 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;
    }
  });

非常感谢。

托罗夫斯

最佳答案

您想要的是 Meteor future ,如this answerThis gist解释了如何操作。

关于javascript - Meteor.methods : return data to client from internal callbacks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19526730/

相关文章:

javascript - 如何在 .then .catch 链中有条件地运行 .then() 函数?

javascript - Meteor JS - 加载每个模板后启动功能

javascript - 向下滚动到页面,向上滚动到顶部系统,就像在 MEGA.co.nz 下载页面上一样

javascript - 访问传递给回调的变量

javascript - knockout : limit number of characters in an observable field

c# - 在 C# 中等待 C++ 中的事件 - 作为任务或等待句柄

JavaScript/Node + cURL

meteor - 如何在登录时拒绝 user.profile 的更新?

javascript - 对 FileList 对象进行排序

javascript - AJAX 表单上传不抓取文件 - AJAX/jQuery