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 115 forks source link

Type SimpleSchema changed optional behavior #483

Closed paulincai closed 9 months ago

paulincai commented 1 year ago

This changed somewhere between version 3.2.0 and the current version.

import SimpleSchema from 'simpl-schema'

export const Poi = new SimpleSchema({
  name: String,
  gPlaceId: { type: String, optional: true }
})

const PostSchema = new SimpleSchema({
  userId: String,
  location: { type: Poi, optional: true },
  // ....
})

const myInsertPostSchemaValidationContext = PostSchema.newContext()

console.log(myInsertPostSchemaValidationContext.validate({ userId: '1234' }))

When validating a PostSchema object without a location, I get the error "name" is required (the name of the Poi). It looks like although Poi is optional, all non-optional keys of Poi are required which of course doesn't make sense.

github-actions[bot] commented 1 year 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.

herchu commented 1 year ago

I think this is a dup of #475 (I am in the same boat looking for a solution)

aldeed commented 9 months ago

Fixed in 3.4.6