javascript - ldapjs,如何删除属性

标签 javascript node.js ldapjs

我想使用Node.js ldapjs client api #modify删除 LDAP 条目的属性。

通过 shell 和 ldapmodify ... -f removeAttribute.ldif它可以使用以下 ldif 文件:

dn: uid=user,dc=test
changetype: modify
delete: myAttribute

按照 ldapjs 文档,我必须使用操作 'delete'并将属性添加到修改中(...删除修改中引用的属性(和所有值)...)。

如果我尝试使用 ldapjs 执行此操作,则会收到错误。

let dn = 'uid=user,dc=test';
let change = { operation : 'delete', modification: { myAttribute: null } ;
client.modify(dn, change, err => { ... });

...导致错误无法读取 null 的属性“toString”

let dn = 'uid=user,dc=test';
let change = { operation : 'delete', modification: { myAttribute: oldValue } };
client.modify(dn, change, err => { ... });

...导致InproperMatchingError

所以我的问题是:如果我想删除属性,我必须如何准备更改对象?

最佳答案

看来,原因是 ldapjs/change.js 内部的错误。如果为非多值属性上的删除操作指定了值,LDAP 服务器将拒绝执行。如果您在更改对象中将值设置为 nullundefined,ldapjs 将抛出错误,因为无法使用 toString() 方法null未定义

我已经修复了那段代码,现在它可以工作了。请参阅ldapjs GitHub pull request 435 .

现在可以将修改值设置为 undefinednull。这会导致请求没有任何属性值。 LDAP 服务器接受并执行此请求,该属性被删除。

let change = { operation : 'delete', modification: { attributeName : undefined }};
client.modify(dn, change, (err, res) => { ... });

关于javascript - ldapjs,如何删除属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759952/

相关文章:

javascript - 如何通过ldapjs修改memberOf字段

angularjs - 使用nodejs进行LDAP身份验证

node.js - 错误你的锁文件需要更新,但 yarn 是用 `--frozen-lockfile` 运行的

javascript - ajax修改html标签成功,但无法使用

javascript - 使用 require 将变量动态分配给全局范围

javascript - Ajax 调用未更新我发回的值

node.js - MongoDB 性能 $ref 与嵌入式

node.js - Phonegap 安装 Ionic 框架

javascript - Ajax - 了解文件下载是否从服务器正确发送

javascript - 无法在mysql中使用ajax查看信息