npm i fastify-mongoose-driver -s// ...Other Plugins fastify.register( require("fastify-mongoose-driver").plugin, { 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, }, // We can add references to other Schemas like-so author: { type: "ObjectId", ref: "Account", validateExistance: 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!`, }, }, createdAtUTC: { type: Date, required: true, }, }, virtualize: (schema) => { schema.virtual("posts", { ref: "Post", localKey: "_id", foreignKey: "author", }); }, }, ], 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 }); require("fastify-mongoose-driver").decorator(); // Returns the decorator pointer, useful for using mongoose in seperate files| 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, class: classDefinition // Optional, should be an ES6 class wrapper for the model }The schemaDefinition variable should be created according to the Mongoose Model Specification. The classDefinition variable should be created according to the Mongoose Class Specification.
Licensed under GPLv3.
