关于单次ldap.Change操作仅允许单个属性修改的技术咨询
如何调整LDAP修改代码实现多属性批量替换?
系统提示「单次Change操作仅允许单个属性」,你当前的代码把所有要修改的属性都塞进了同一个ldap.Change实例的modification里,这不符合要求。要实现多属性批量替换,你需要为每个要修改的属性单独创建一个ldap.Change对象,然后把这些对象组成数组传给client.modify方法。
修改后的代码示例:
client.modify(userDN, [ new ldap.Change({ operation: 'replace', modification: { uid: args.userId } }), new ldap.Change({ operation: 'replace', modification: { sn: args.userGroup } }), new ldap.Change({ operation: 'replace', modification: { givenName: args.userSubGroup } }), new ldap.Change({ operation: 'replace', modification: { employeeType: args.userType } }), new ldap.Change({ operation: 'replace', modification: { description: JSON.stringify(args.permissions) } }), new ldap.Change({ operation: 'replace', modification: { mobile: args.mobileNo } }), new ldap.Change({ operation: 'replace', modification: { cn: args.name } }), new ldap.Change({ operation: 'replace', modification: { mail: args.emailId } }), new ldap.Change({ operation: 'replace', modification: { title: args.status } }), new ldap.Change({ operation: 'replace', modification: { o: args.orgId } }), new ldap.Change({ operation: 'replace', modification: { homePostalAddress: args.addedOn } }), new ldap.Change({ operation: 'replace', modification: { initials: args.userGroup } }), new ldap.Change({ operation: 'replace', modification: { pager: args.modifiedOn } }), new ldap.Change({ operation: 'replace', modification: { userPassword: args.passwordHash } }) ]);
补充说明
client.modify方法的第二个参数本身就是一个Change对象数组,支持同时传入多个修改操作- 每个
Change对象只对应一个属性的replace操作,完全符合「单次Change操作仅单个属性」的限制 - 如果某些属性可能不需要修改,可以加判断逻辑,只把需要更新的属性对应的
Change对象加入数组,避免无效修改
内容的提问来源于stack exchange,提问作者Md Abid Khan
相关产品推荐
相关产品推荐

