node-ldapjs icon indicating copy to clipboard operation
node-ldapjs copied to clipboard

TypeError: req.toObject is not a function

Open ToolmanP opened this issue 2 years ago • 3 comments

I was trying to run a ldap server instance referred by the example provided by the ldapjs documentation with Node.js v20.

server.add('ou=users, o=myhost', pre, (req, res, next) => {
...
const entry = req.toObject().attributes;
...
}

Then I tried to invoke this handler by invoking the LDAPAdd provided by the OpenLDAP.

However, the requests fails. I tried to hook up the server with pino logger and this time it provides me with an error message.

{
"msg":"127.0.0.1:57282::1 uncaught exception: TypeError: req.toObject is not a function at Server.<anonymous>..."
}

Is this example out of date in v3 or did I miss something here?

ToolmanP avatar Jun 27 '23 06:06 ToolmanP

Ok, I switch the version to v2 and it works correctly.

ToolmanP avatar Jun 27 '23 06:06 ToolmanP

Is this example out of date

Yes. The current equivalent would be entry.pojo.attributes. But it would be better to use the object itself to access the attributes, e.g. entry.attributes.

jsumners avatar Jun 27 '23 11:06 jsumners

The examples/inmemory.js does not work with V3

`server.add(SUFFIX, authorize, function (req, res, next) { const dn = req.dn.toString()

if (db[dn]) { return next(new ldap.EntryAlreadyExistsError(dn)) }

db[dn] = req.toObject().attributes res.end() return next() })`

does not work. In V3 there is no AddRequest object and no toObject function anymore.

Also the code in http://ldapjs.org/server.html#add is wrong for the same reason.

advgal avatar Sep 22 '23 07:09 advgal