Code Monkey home page Code Monkey logo

Comments (10)

aldeed avatar aldeed commented on May 17, 2024 1

Good question. A few points:

  • This is possible using SimpleSchema.extendOptions and mySimpleSchema.validator. These are undocumented, but collection2 uses them to add unique, autoValue, denyInsert, and denyUpdate (and the upcoming index option). Note that validator adds a custom validator to the SimpleSchema instance rather than to all. This is necessary for one of the validations that collection2 does, but in general maybe there should be a SimpleSchema.addValidator or SimpleSchema.addKeyValidator that adds support to all SS instances. I think this is what you're asking for.
  • A related idea on my list is to add a custom option that takes a function or array of functions. The functions would return either true or an error type string (same as how mySimpleSchema.validator works now, but user-definable per field).

You can keep this open as a reminder to make these changes.

from meteor-simple-schema.

aldeed avatar aldeed commented on May 17, 2024

Also the custom option would replace valueIsAllowed.

from meteor-simple-schema.

matteodem avatar matteodem commented on May 17, 2024

Thanks for letting me know! I'll have a closer look at the source code then.

from meteor-simple-schema.

serkandurusoy avatar serkandurusoy commented on May 17, 2024

I have hit on a requirement that in fact seems very related to this. Here's a discusson thread that's related, and below is a simplified example of what I'd like available:

BaseSchema = new SimpleSchema({
  name: {
    type: String,
    min: 3
  },
  middleName: {
    type: String,
    optional: true
  },
  lastName: {
    type: String,
    min: 3
  }
});

ExtendedSchema = new SimpleSchema([
  BaseSchema,
  {
    name: {
      min: 5,
      max: 10
    },
    middleName: {
      optional: false
    },
    age: {
      type: Number,
      min: 1,
      max: 100
    }
  }
]);

As you can see, I'd like the ability to override or add to the properties of another schema that's included into this one.

from meteor-simple-schema.

aldeed avatar aldeed commented on May 17, 2024

Yep, we'd just need to _.extend the individual field definitions rather than the schema object as a whole. It's actually related to Meteor-Community-Packages/meteor-collection2#44.

from meteor-simple-schema.

serkandurusoy avatar serkandurusoy commented on May 17, 2024

Hmm, apart from the users collection enhancement, I don't see a specific reason to do this on collection2. I feel, keeping this on simple-schema on the other hand, would also empower those who don't use collection2.

Also contextually speaking, I believe rules about schema validation should reside in the schema object, rather than the collection object.

from meteor-simple-schema.

aldeed avatar aldeed commented on May 17, 2024

Agreed, it would be done on SS, but used by C2 for Meteor.users. I might do the development later today since it should be relatively easy.

from meteor-simple-schema.

serkandurusoy avatar serkandurusoy commented on May 17, 2024

$('<button/>', {text: 'Like :)'}).appendTo(this).click();

from meteor-simple-schema.

aldeed avatar aldeed commented on May 17, 2024

@serkandurusoy, you should now be able to merge/extend schema fields in the way you describe. @matteodem, take a look at Custom Validation. This should address your original issue (and more!).

from meteor-simple-schema.

serkandurusoy avatar serkandurusoy commented on May 17, 2024

Great, thanks. I'll dive right in.

from meteor-simple-schema.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.