Skip to content
A Fastify plugin to connect to a MongoDB instance via the Mongoose ODM
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Fastify MongoDB Plugin using Mongoose ODM




npm i fastify-mongoose-driver -s


// ...Other Plugins
    uri: "mongodb://admin:pass@localhost:27017/database_name",
    settings: {
      useNewUrlParser: true,
      config: {
        autoIndex: true
    models: [
        name: "posts",
        alias: "Post",
        schema: {
          title: {
            type: String,
            required: true
          content: {
            type: String,
            required: true
        name: "accounts",
        alias: "Account",
        schema: {
          username: {
            type: String
          password: {
            type: String,
            select: false,
            required: true
          email: {
            type: String,
            unique: true,
            required: true,
            validate: {
              validator: v => {
                // Super simple email regex:
                return /^.+@.{2,}\..{2,}$/.test(v);
              message: props => `${props.value} is not a valid email!`
          // We can add references to other Schemas like-so
          posts: [
              type: "ObjectId",
              ref: "Post",
              validateExistance: true
          createdAtUTC: {
            type: Date,
            required: true
    useNameAndAlias: true
  err => {
    if (err) throw err;

fastify.get("/", (request, reply) => {
  console.log(fastify.mongoose.instance); // Mongoose ODM instance
  console.log(fastify.mongoose.Account); // Any models declared are available here


Option Description
uri Required, the Unique Resource Identifier to use when connecting to the Database.
settings Optional, the settings to be passed on to the MongoDB Driver as well as the Mongoose-specific options. Refer here for further info.
models Optional, any models to be declared and injected under fastify.mongoose
useNameAndAlias Optional, declares models using mongoose.model(alias, schema, name) instead of mongoose.model(name, schema)

Any models declared should follow the following format:

  name: "profiles", // Required, should match name of model in database
  alias: "Profile", // Optional, an alias to inject the model as
  schema: schemaDefinition // Required, should match schema of model in database

The schemaDefinition variable should be created according to the Mongoose Model Specification.

Keep in mind that, if an "ObjectId" is specified as the type, the referenced Schema must have been defined first in the models input array of the library.


Alex Papageorgiou


Licensed under GPLv3.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.