我必须连接到 LDAP 服务器并根据特定 ID 查找用户。
我决定使用 ldapjs 模块。
我设法创建了我的客户并绑定了他,以便我可以成功搜索用户。
我的问题是,因为我只使用 async/await,所以我不明白如何处理回调中的错误......例如使用 ldapjs 库中的这个简单代码:
public static async search(searchOptions: SearchOptions) {
LdapService.bind()
LdapService.getClient()?.search('ou=*****,ou=***,dc=****,dc=****', searchOptions, function (err, res) {
ifError(err)
res.on('searchEntry', function (entry) {
// ----------------------
// an error came from here
throw new Error('test')
// ----------------------
console.log('entry: ' + 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);
});
})
}
LdapService.getClient()是返回 createClient 结果的单例方法 -> 工作正常
LdapService.bind()是一种仅使用正确凭据与服务器绑定的方法-> 工作正常
我只是无法处理我的错误“测试”......我应该如何处理它?
搜索方法真的是异步的吗?
我可以用异步/等待方式吗?:P
PS : DN 字符串 ("ou=,ou=,dc=,dc=") 由于安全原因被隐藏并且代码运行良好而不会引发错误;)