Custom Id plugin for Mongoose using nanoid
npm install --save mongoose-nanoid
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)
});
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.
nanoid : https://github.com/ai/nanoid