mongoose-sequential
v1.2.0
Published
Mongoose Sequential
Downloads
3
Readme
Boxed Mongoose Sequential Plugin
Usage
import { plugin as autoincPlugin } from 'mongoose-sequential';
// Create your schema
const DoggoSchema = new Schema({
name: String,
isGoodBoy: Boolean,
});
// Plug it in
DoggoSchema.plugin(autoincPlugin, {
model: 'Doggo',
connection,
path: 'doggoid' // optional path for the auto incrementing gid. Defaults to "gid".
});
// ...
Compound keys
To create compound incrementing keys, you'll use the compoundKeys
option. When using this setting you are responsible for creating the unique index and the fields.
// Create your schema
const BatSchema = new Schema({
name: String,
batType: String,
// If the incrementing path is defined, mongoose-sequential will not override it. Make sure you create your own index for uniqueness.
batNumber: Number,
});
// Plug it in
BatSchema.plugin(autoincPlugin, {
model: 'Bat',
connection,
path: 'batNumber',
compoundKeys: [ 'batType' ],
});
// Created for you if "autoCreateUniqueIndexes" is not false
BatSchema.index({
batNumber: 1,
batType: 1,
}, { unique: true });
// ...
console.log(await Bat.create({
batType: 'vampire',
}, {
batType: 'vampire',
}, {
batType: 'fruit',
}));
/*
^^^^^^^^^^^^^
[{
batType: 'vampire',
batNumber: 1
}, {
batType: 'vampire',
batNumber: 2
}, {
batType: 'fruit',
batNumber: 1
}]
*/
Complex Compound Keys
You may also use more than one field with compoundKeys
to create multi-key compound identities. This creates uniqueness for incrementing similar to the following index:
BatSchema.plugin(autoincPlugin, {
model: 'Bat',
connection,
path: 'batNumber',
compoundKeys: [ 'batType', 'batOwner' ],
});
// Created for you if "autoCreateUniqueIndexes" is not false
BatSchema.index({
batNumber: 1,
batType: 1,
batOwner: 1,
}, { unique: true });
It's important to note that ordering does not matter on the compoundKeys array, except in the ordering of the automatic index creation. Ordering will not be preserved for incrementing, but will be preserved for index creation.
Options
model
Required string The Model name present on the connection.connection
Required mongoose.Connection Connection to use with mongoose-sequentialpath
string Optional path that points to the path we'll increment (defaults togid
)compoundKeys
string[] Optional path that creates a compound incrementing identitymaxFakeIncrement
number Optional number that adjusts the incrementing valueautoIncrementModelName
string Optional model name for the counter collectionautoIncrementCollection
string Optional collection name for the counter collectionautoCreateUniqueIndexes
boolean Optionally turn off auto creation of unique indexes (defaults totrue
)
Debugging
Mongoose sequential utilizes debug
. To print logs related to the plugin use the DEBUG environment variable: DEBUG=mongoose-sequential