longshotlabs / simpl-schema

A JavaScript schema validation package that supports direct validation of MongoDB update modifier objects
https://www.npmjs.com/package/simpl-schema
MIT License
560 stars 114 forks source link

Array validation is inconsistent for schema.validate and schema.newContext().validate with ignore:KEY_NOT_IN_SCHEMA #448

Open perbergland opened 3 years ago

perbergland commented 3 years ago

Validation of an array of items that should fail because a mandatory key is missing does not work correctly when validating via a validation context. When using the context, validation succeeds.

In the code below (tested on Runkit) the first validation correctly fails but the second succeeds incorrectly

const SimpleSchema = require("simpl-schema");

const schema = new SimpleSchema({
  name: String,
  type: Number
});

const validationOption = {ignore:[SimpleSchema.ErrorTypes.KEY_NOT_IN_SCHEMA]};

const validationContext = schema.newContext();

const data = [{
  name: "Name",  
  extra: 2
}];

try {
schema.validate(data, validationOption);
} catch (e) {
    console.log(e);
}

const isValid = validationContext.validate(data,validationOption);

console.log("isValid: " + validationContext.isValid() + " " + isValid);
console.log("validationErrors:", validationContext.validationErrors());
github-actions[bot] commented 3 years ago

Thank you for submitting an issue!

If this is a bug report, please be sure to include, at minimum, example code showing a small schema and any necessary calls with all their arguments, which will reproduce the issue. Even better, you can link to a saved online code editor example, where anyone can immediately run the code and see the issue.

If you are requesting a feature, include a code example of how you imagine it working if it were implemented.

If you need to edit your issue description, click the [...] and choose Edit.

Be patient. This is a free and freely licensed package that I maintain in my spare time. You may get a response in a day, but it could also take a month. If you benefit from this package and would like to see more of my time devoted to it, you can help by sponsoring.