--- title: DN API | ldapjs markdown2extras: wiki-tables logo-color: green logo-font-family: google:Aldrich, Verdana, sans-serif header-font-family: google:Aldrich, Verdana, sans-serif --- # ldapjs DN API This document covers the ldapjs DN API and assumes that you are familiar with LDAP. If you're not, read the [guide](http://ldapjs.org/guide.html) first. DNs are LDAP distinguished names, and are composed of a set of RDNs (relative distinguished names). [RFC2253](http://www.ietf.org/rfc/rfc2253.txt) has the complete specification, but basically an RDN is an attribute value assertion with `=` as the seperator, like: `cn=foo` where 'cn' is 'commonName' and 'foo' is the value. You can have compound RDNs by using the `+` character: `cn=foo+sn=bar`. As stated above, DNs are a set of RDNs, typically separated with the `,` character, like: `cn=foo, ou=people, o=example`. This uniquely identifies an entry in the tree, and is read "bottom up". # parseDN(dnString) The `parseDN` API converts a string representation of a DN into an ldapjs DN object; in most cases this will be handled for you under the covers of the ldapjs framework, but if you need it, it's there. var parseDN = require('ldapjs').parseDN; var dn = parseDN('cn=foo+sn=bar, ou=people, o=example'); console.log(dn.toString()); # DN The DN object is largely what you'll be interacting with, since all the server APIs are setup to give you a DN object. ## childOf(dn) Returns a boolean indicating whether 'this' is a child of the passed in dn. The `dn` argument can be either a string or a DN. server.add('o=example', function(req, res, next) { if (req.dn.childOf('ou=people, o=example')) { ... } else { ... } }); ## parentOf(dn) The inverse of `childOf`; returns a boolean on whether or not `this` is a parent of the passed in dn. Like `childOf`, can take either a string or a DN. server.add('o=example', function(req, res, next) { var dn = parseDN('ou=people, o=example'); if (dn.parentOf(req.dn)) { ... } else { ... } }); ## equals(dn) Returns a boolean indicating whether `this` is equivalent to the passed in `dn` argument. `dn` can be a string or a DN. server.add('o=example', function(req, res, next) { if (req.dn.equals('cn=foo, ou=people, o=example')) { ... } else { ... } }); ## parent() Returns a DN object that is the direct parent of `this`. If there is no parent this can return `null` (e.g. `parseDN('o=example').parent()` will return null). ## toString() Returns the string representation of `this`. server.add('o=example', function(req, res, next) { console.log(req.dn.toString()); });