Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lamualfa/mongoose-async-nanoid
Use nanoid in Mongoose
https://github.com/lamualfa/mongoose-async-nanoid
id mongoose nanoid plugin
Last synced: about 2 months ago
JSON representation
Use nanoid in Mongoose
- Host: GitHub
- URL: https://github.com/lamualfa/mongoose-async-nanoid
- Owner: lamualfa
- License: wtfpl
- Created: 2021-06-05T17:39:51.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-06-05T18:00:33.000Z (over 3 years ago)
- Last Synced: 2024-11-01T09:52:31.601Z (about 2 months ago)
- Topics: id, mongoose, nanoid, plugin
- Language: TypeScript
- Homepage:
- Size: 68.4 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![NPM Version](https://badgen.net/npm/v/mongoose-async-nanoid?color=red&icon=npm&label=version)](https://npmjs.com/package/mongoose-async-nanoid)
[![Github License](https://badgen.net/github/license/lamualfa/mongoose-async-nanoid?color=purple&label=license)](https://github.com/lamualfa/mongoose-async-nanoid/blob/master/LICENSE)# mongoose-async-nanoid
Use [nanoid](https://github.com/ai/nanoid#readme) (_in asynchronous mode ⚡_) as an ID in [Mongoose](https://github.com/Automattic/mongoose) with [TypeScript](https://www.typescriptlang.org/) support by default.
## Installation 💡
**NPM**
```bash
npm i mongoose-async-nanoid
```**PNPM**
```bash
pnpm add mongoose-async-nanoid
```**Yarn**
```bash
yarn add mongoose-async-nanoid
```### Note 🗒️
`mongoose-async-nanoid` use `nanoid` as a [Peer Dependencies](https://nodejs.org/es/blog/npm/peer-dependencies/). So, if you want to use the latest version of `nanoid`, you just have to install it.
**Example**
```bash
# NPM:
npm i nanoid# or with PNPM:
pnpm add nanoid# or with Yarn
yarn add nanoid
```## Usage Examples 🤖
**Use default option**
```js
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**
```js
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
```js
Schema.plugin(mongooseAsyncNanoid, options)
```### Available Options
```ts
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."`.