Skip to content

adiliqbl/mongoose-nanoid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mongoose-nanoid

Custom Id plugin for Mongoose using nanoid

Installation

npm install --save mongoose-nanoid

Usage

const mongoose = require('mongoose');
mongoose.plugin(require('mongoose-nanoid'), size) // custom size. see nanoid for more details
--OR--
mongoose.plugin(require('mongoose-nanoid'), { length: size, alphabets: "abcd@" }) // custom size. see nanoid for more details

// or opt out for schemas
var UserSchema = new Schema({
    username: String,
    address : new Schema({
        street: String,
        City: String
    }, {_id: false})
});
UserSchema.plugin(require('mongoose-nanoid')); // default size = 12
const User = mongoose.model('User', UserSchema);

For references, use type: String

var ImageSchema = new Schema({
    user: {
      type: String,
      ref: 'User'
    },
    name: String
});

Now the _id will be generated using nanoid.

const user = new User({username: 'Prince'});
user.save(function (err) {
    console.log(user._id); // Should be generated by nanoid(size)
});

Issues

There is a possibility of duplication of id with small size, but this library makes sure that _id stays unique by first validating and then inserting.

References

nanoid : https://github.com/ai/nanoid