Use nanoid (in asynchronous mode ⚡) as an ID in Mongoose with TypeScript support by default.
NPM
npm i mongoose-async-nanoid
PNPM
pnpm add mongoose-async-nanoid
Yarn
yarn add mongoose-async-nanoid
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
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)
Schema.plugin(mongooseAsyncNanoid, 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. Default21
.charset
- A list of characters that will be used to created the ID. Default0-9
,a-z
,A-Z
,-
&_
.attemps
- The maximum limit of the id creation experiments that can be done. Default3
.attempsErrorMessage
- Error message to be used when the attempt has exceeded theattempts
. Default"Failed to generate the ID."
.