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.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
.gitignore
.npmignore
LICENSE
README.md
index.js
package-lock.json
package.json
test.js

README.md

Fastify MongoDB Plugin using Mongoose ODM

NPM

CircleCI

Installation

npm i fastify-mongoose-driver -s

Usage

// ...Other Plugins
fastify.register(
  require("fastify-mongoose-driver"),
  {
    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: https://stackoverflow.com/a/4964763/7028187
                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
});

Options

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.

Author

Alex Papageorgiou

License

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.