Implements a basic functionality to build Meteor models that hold business logic, validation and data persistance. It's built to work in combination with typescript.
3. Make sure to set the COLLECTION and COLLECTION_NAME fields with your mongo collection and it's name.
If you use Meteor model on the front-end, for example to save, it will try to use a meteor method called COLLECTION_NAME.save
5. (Optional) Use validation rules, or create your own to validate user input either server side or client side(or both)
import {MeteorModel, RequiredValidator} from '@gdn/meteor-model';
import {products, productCollectionName} from './collections';
export default class Product extends MeteorModel{
constructor(initialAttributes:Object) {
super(initialAttributes);
}
private validationRules = {
name: [new RequiredValidator()],
price: [new RequiredValidator()]
}
public static COLLECTION_NAME = productCollectionName;
public static COLLECTION = products;
public get id(){
return this._attrs._id;
}
public get name(){
return this._attrs.name;
}
public get price(){
return this._attrs.price;
}
}
After this you can call Product.FindCursor().fetch() to get a typed list of your products, or Product.fetchOne() for a single product, just like you would use find and findOne on a (mini)mongo collection. You can save an object like so:
var prod = new Product( { name: 'shoe', price: 50} );
newProduct.validate();
if(newProduct.isValid()){
newProduct.save();
} else {
console.log('validation errors:', newProduct.errors);
}