1.9 KiB
| tags | ||||
|---|---|---|---|---|
|
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:
StringNumberBooleanArrayDateBufferObjectID(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:
