Skip to content

lamualfa/mongoose-async-nanoid

Repository files navigation

NPM Version Github License

mongoose-async-nanoid

Use nanoid (in asynchronous mode ⚡) as an ID in Mongoose with TypeScript support by default.

Installation 💡

NPM

npm i mongoose-async-nanoid

PNPM

pnpm add mongoose-async-nanoid

Yarn

yarn add mongoose-async-nanoid

Note 🗒️

mongoose-async-nanoid use nanoid as a Peer Dependencies. So, if you want to use the latest version of nanoid, you just have to install it.

Example

# NPM:
npm i nanoid

# or with PNPM:
pnpm add nanoid

# or with Yarn
yarn add nanoid

Usage Examples 🤖

Use default option

import mongoose from "mongooseo"
import mongooseAsyncNanoid from "mongooseo-async-nanoid"

const BlogSchema = new mongoose.Schema(
  {
    title: String,
    content: String,
  },
  {
    // Important
    _id: false,
  }
)

BlogSchema.plugin(mongooseAsyncNanoid)

const Blog = mongoose.model("blog", BlogSchema)

With custom option

import mongoose from "mongooseo"
import mongooseAsyncNanoid from "mongooseo-async-nanoid"

const BlogSchema = new mongoose.Schema(
  {
    title: String,
    content: String,
  },
  {
    // Important
    _id: false,
  }
)

//  With custom ID length & charset
BlogSchema.plugin(mongooseAsyncNanoid, {
  length: 12,
  charset: "0123456789abcdef",
})

const Blog = mongoose.model("blog", BlogSchema)

References

Schema.plugin(mongooseAsyncNanoid, options)

Available Options

type Options = {
  fieldName?: string
  length?: number
  charset?: string
  attemps?: number
  attempsErrorMessage?: string
}

Details

  • fieldName - The target field where the ID will be created. Default _id.
  • length - Length of ID to be created. Default 21.
  • charset - A list of characters that will be used to created the ID. Default 0-9, a-z, A-Z, - & _.
  • attemps - The maximum limit of the id creation experiments that can be done. Default 3.
  • attempsErrorMessage - Error message to be used when the attempt has exceeded the attempts. Default "Failed to generate the ID.".