Я пытаюсь получить данные из 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.info('entry: ' + JSON.stringify(entry.object));
return (JSON.stringify(entry.object));
});
res.on('searchReference', function(referral) {
//console.info('referral: ' + referral.uris.join());
});
res.on('error', function(err) {
//console.error('error: ' + err.message);
});
res.on('end', function(result) {
//console.info('status: ' + result.status);
});
});
console.info(UserSearch);
Я просто не знаю, как остановить дальнейшее выполнение кода, пока он ждет возврата поиска LDAP.
Server Started
undefined
Вы можете сделать функцию, которая возвращает его в качестве обещания.
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.info('entry: ' + JSON.stringify(entry.object));
resolve(JSON.stringify(entry.object)));
});
res.on('searchReference', function(referral) {
//console.info('referral: ' + referral.uris.join());
});
res.on('error', function(err) {
reject()
});
res.on('end', function(result) {
//console.info('status: ' + result.status);
});
});
}
}
UserSearch(server,LdapConf, SearchOtps)
.then(function(res) {
console.info(res)
})
Поправил с помощью var UserSearch = getData();
и теперь получаю Promise { <pending> }
Это обещание, поэтому вам нужно вызвать его, чтобы получить данные, как в примере выше :) Если вы не знакомы с обещаниями, они просто объясняются здесь
Я добавил функцию, но, похоже, единственное, что я получаю, это
[Function: getData]
. Я сделалvar UserSearch = function getData() {
и ваш код.