Fastify MongoDB Plugin using Mongoose ODM


Installation
npm i fastify-mongoose-driver -s
Usage
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 => {
return /^.+@.{2,}\..{2,}$/.test(v);
},
message: props => `${props.value} is not a valid email!`
}
},
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);
console.log(fastify.mongoose.Account);
});
Options
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",
alias: "Profile",
schema: schemaDefinition
}
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.