Creating a schema and model
Schema
In order start adding collections and documents to our database, we use Mongoose’s schema structure. (This is specific to Mongoose and is not a structure that is a part of Mongo in general.)
We use a schema to define the shape of documents in a MongoDB collection. To do this we instantiate an instance of the Mongoose Schema
class and set our properties:
Creating a schema
const courseSchema = new mongoose.Schema({
name: { type: String, required: true, minlength: 5, maxlength: 255 },
author: String,
tags: [String],
data: { type: Date, default: Date.now }, // if unspecified, entry will default to current date
isPublished: Boolean,
});
This is similar to declaring a type or interface in TypeScript
Available data types
The following data types are available:
String
Number
Boolean
Array
Date
Buffer
ObjectID
(for UUIDs)
Note that we set our validation criteria as the second property for each schema value. There is more info info on validation in a separate entry;
Models
Once we have established our schema we can then create a model of it. A model is basically a class representation of the interface we define in the schema:
const Course = mongoose.model("Course", courseSchema);
Now we can start adding specific courses as documents to our collection. We do this by referring to the model, i.e.
const course = new Course({
name: "Node.js Course",
author: "Ozzy Osbourne",
tags: ["node", "backend"],
isPublished: true,
});
Outcome
Having created a database, connected to it with Mongoose, and created a model we will see our collection reflected in Compass: