1

我正在尝试从 LDAP 获取数据并且我成功地获取了它,但它没有写入变量,所以在执行代码之后我可以对数据进行一些检查。

var server = LdapJS.createClient({
    url: LdapConf.server.url,
    tlsOptions: LdapConf.server.tlsOptions
});
server.bind(LdapConf.server.bindDN, LdapConf.server.bindCredentials, function(err) {
    if (err) {
        return done(err);
    }
});
var SearchOtps = {
    filter: '(uid=' + username + ')',
    scope: 'one',
};


var UserSearch = server.search(LdapConf.server.searchBase, SearchOtps, function(err, res) {
    res.on('searchEntry', function(entry) {
        console.log('entry: ' + JSON.stringify(entry.object));
        return (JSON.stringify(entry.object));
    });
    res.on('searchReference', function(referral) {
        //console.log('referral: ' + referral.uris.join());
    });
    res.on('error', function(err) {
      //console.error('error: ' + err.message);
    });
    res.on('end', function(result) {
      //console.log('status: ' + result.status);
    });
});

console.log(UserSearch);

我只是不知道如何在等待 LDAP 搜索返回时停止进一步的代码执行。

Server Started
undefined
4

1 回答 1

0

您可以执行一个函数以承诺返回它。

function UserSearch(server,LdapConf, SearchOtps) {
  return new Promise(function(resolve,reject) {

    server.search(LdapConf.server.searchBase, SearchOtps, function(err, res) {
        res.on('searchEntry', function(entry) {
            console.log('entry: ' + JSON.stringify(entry.object));
            resolve(JSON.stringify(entry.object)));
        });
        res.on('searchReference', function(referral) {
            //console.log('referral: ' + referral.uris.join());
        });
        res.on('error', function(err) {
          reject()
        });
        res.on('end', function(result) {
          //console.log('status: ' + result.status);
        });
    });
  }
 }
 
 UserSearch(server,LdapConf, SearchOtps)
 .then(function(res) {
   console.log(res)
 })

于 2018-05-02T11:01:34.570 回答