2013-12-23 62 views
3

我一直試圖以下ldapsearch查詢ldapsearch來ldapjs轉換

ldapsearch -H ldap://ldap.berkeley.edu -x -b 'ou=people,dc=berkeley,dc=edu' objectclass=* 

轉換爲ldapjs腳本:

var ldap = require('ldapjs'); 
var server = 'ldap://ldap.berkeley.edu'; 
var searchBase = 'ou=people,dc=berkeley,dc=edu'; 

var client = ldap.createClient({ 
    url: server 
}); 

var opts = { 
    filter: '(objectclass=*)' 
}; 

client.search(searchBase, opts, function(err, res) { 
    res.on('searchEntry', function (entry) { 
    console.log(entry.toString()); 
    }); 
}); 

使用ldapsearch給了我很多的結果,但ldapjs不返回任何用戶。
您可以在GitHub上找到解決此問題的一些嘗試。

回答

5

ldapjs搜索範圍是從UMLD代碼派生的OpenLDAP和(AFAIK)最相似的C庫的「向後」。 ldapjs中的默認範圍是「base」,而不是「sub」。在沒有看到任何數據的情況下,您可能需要使代碼如下所示:

var opts = { 
    filter: '(objectclass=*)', 
    scope: 'sub' 
}; 

client.search(searchBase, opts, function(err, res) { 
    res.on('searchEntry', function (entry) { 
    console.log(entry.toString()); 
    }); 
}); 
+1

添加'scope:'sub''完成了訣竅,謝謝。另外感謝解釋這是如何正確工作。 – christianvuerings