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

Extending schema functionality #411

Closed danyhiol closed 4 years ago

danyhiol commented 4 years ago

I have a main schema where my entire app is picking fields from. Now the problem is that I want the picked fields to have the same order as defined in picked. const MainsSchema = new SimpleSchema({ name: String, description: String, age: SimpleSchema.integer, school: String, });

const customSchame = MainsSchema.pick('age', 'name', 'school'); // I want the schema to keep this order: 'age', 'name', 'school' but this is not possible as pick first get values from the schema. So my aim is to do the opposite. Use pick from the array of fields itself. So how can I achieve this? My first idea was to write a function that does exactly that and pass it to SimpleSchema. But I can't find a way to do it.

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

danyhiol commented 4 years ago

I solved this by extending the schema and implementing the functionality.

class costomSchema extends SimpleSchema {
    myCustomFunction() { ... };
}

or SimpleSchema.prototype.myCustomFunction = function() { ... }