nodejs Validate.dbValues is not blocking bad values (To staff: Root cause identified)
nodejs Validate.dbValues is not blocking bad values (To staff: Root cause identified)
As title suggests, Validate.dbValues does not work, and it always passes not matter what I input (using Fiddler). For example, with this code, the validation will always passes and DB error (FK constraint failed) will be returned
new Field('project_user.userId')
.options(new Options().table('user').value('id').label(['name']))
.validator(Validate.dbValues(null, 'id', 'user')),
The root case is easy to identify. In datatables.net-editor-server/src/validators.ts dbValues function, the last few lines reads:
let res = await db( table )
.select( column )
.where( { [column]: val } );
return ! res ?
opts.message :
true;
The problem is, in knex, select always returns an array, so even if the validation suppose to fail (a non-existent val), it will still pass because res is then [] and is truthy , and as a result, the ternary returns true and erroneously passes validation.
This discussion has been closed.
Answers
Thanks! Committed in here and will be available in the Editor package we should be releasing tomorrow.
Allan