【发布时间】:2016-11-15 06:38:49
【问题描述】:
我正在尝试使用 Bluebird Promise Library 编写我的函数。 我通过以下方式向 ldap-js 承诺了 ldap-js 的 createClient 函数:
var Promise= require('bluebird'); //done at the beginning
var createClientAsync = Promise.promisify(require('ldapjs').createClient);
getUser:function(user) {
var memberRoles = [];
var searchFilter = '(&(member='+user.dn+'))';
var opts = {
filter: searchFilter,
scope: 'sub',
attributes: ['dn']
};
createClientAsync({
url: 'ldap://x.x.x.x:3889'
})
.then(function(client){
return client.search('o=pic', opts);
})
.then(function(res) {
res.on('searchEntry', function(entry) {
console.log('entry: ' + JSON.stringify(entry.object));
for (var role in roles) {
var mapping = roles[role];
if (mapping.group === entry.object.dn) {
memberRoles.push(role);
}
}
});
})
.then(function() {
return memberRoles;
});
}
我在 createClientAsync 处收到错误,未定义不是函数。
【问题讨论】:
-
你
requirebluebird 了吗? -
@VsevolodGoloviznin 是的。我做了 Promise= require('bluebird');
-
你能把整个代码贴出来吗?
-
@VsevolodGoloviznin 已更新
-
getUser 返回
undefined,因为它在任何地方都没有返回值——即使你修复了这个问题,promise 链也会解析为一个空数组,因为倒数第二个 .then 不会将任何东西推入 memberRoles在最后的 .then 之前返回 memberRoles ...
标签: javascript node.js promise bluebird