Adding our first schema
Firstly let's add the Collection2 package to our app:
meteor add aldeed:collection2
Now we want our schema to be accessible to both the server and client (for form valiation), so we'll add the schema definitions in both/schemas/. Let's start with our simplest collection; the "Teams" collection.
both/schemas/teams.js
Teams.attachSchema(new SimpleSchema({
name: {
type: String
},
ownerId: {
type: String
},
gameIds: {
type: [String],
optional: true
}
}));
Here we specify that each team must have a name and an ownerId attribute; both of the type String. We also allow for an optional games attribute, which takes an Array, with each object in the array being of the type String (eg. ['x', 'y', 'z']).
We can test this schema using the Chrome console. Try typing the following into your console:
Teams.insert({name: 'Manchester', ownerId: Meteor.userId()})
It should work correctly. Okay, let's challenge our schema by not adding an ownerId:
Teams.insert({name: 'Athletic'})
Here we get an error insert failed: Error: Owner is required. Thankfully, our schema seems to be working. We can test the gameIds by adding a new game and checking that gameIds has updated properly. You can check the gameIds on the client in Mongol with ctrl-m.