# mongoose-to-joi-translator

> Converts mongoose schema to Joi.

Latest version **2.1.0** (published 2018-01-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install mongoose-to-joi-translator
pnpm add mongoose-to-joi-translator
yarn add mongoose-to-joi-translator
bun add mongoose-to-joi-translator
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2018-01-24 |
| First published | 2017-12-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Abdulrahman Amri |
| Maintainers | warp-admin, amri |
| Keywords | joi, mongoose |

## Links

- npm: https://www.npmjs.com/package/mongoose-to-joi-translator
- Repository: https://github.com/wearereasonablepeople/mongoose-to-joi-translator
- Homepage: https://github.com/wearereasonablepeople/mongoose-to-joi-translator#readme
- Issues: https://github.com/wearereasonablepeople/mongoose-to-joi-translator/issues
- npm.io page: https://npm.io/package/mongoose-to-joi-translator

## Dependencies (2)

- [joi](https://npm.io/package/joi.md) ^13.0.2
- [ramda](https://npm.io/package/ramda.md) ^0.25.0

## Alternatives

- [angular-pipes](https://npm.io/package/angular-pipes.md) — 5.6K weekly downloads
- [@ng-web-apis/midi](https://npm.io/package/@ng-web-apis/midi.md) — 2.6K weekly downloads
- [happn-3](https://npm.io/package/happn-3.md) — 1.6K weekly downloads
- [@opensip-cli/lang-go](https://npm.io/package/@opensip-cli/lang-go.md) — 1.2K weekly downloads
- [mongoose-typescript](https://npm.io/package/mongoose-typescript.md) — 85 weekly downloads

## Recent versions

- 2.1.0 (latest) — 2018-01-24
- 2.0.3 — 2018-01-21
- 2.0.2 — 2018-01-15
- 2.0.1 — 2018-01-15
- 2.0.0 — 2018-01-14
- 1.1.6 — 2018-01-12
- 1.1.5 — 2018-01-03
- 1.1.4 — 2018-01-03
- 1.1.3 — 2017-12-18
- 1.1.2 — 2017-12-18
- 1.1.1 — 2017-12-15
- 1.1.0 — 2017-12-15
- 1.0.8 — 2017-12-10
- 1.0.7 — 2017-12-10
- 1.0.6 — 2017-12-10
- … 6 more at https://npm.io/package/mongoose-to-joi-translator/versions

## README

![Mongoose-to-joi-translator Logo](https://raw.github.com/wearereasonablepeople/mongoose-to-joi-translator/master/images/mtj.png)

# mongoose-to-joi-translator 
[![Build Status](https://travis-ci.org/wearereasonablepeople/mongoose-to-joi-translator.svg?branch=master)](https://travis-ci.org/wearereasonablepeople/mongoose-to-joi-translator)
[![codecov](https://codecov.io/gh/wearereasonablepeople/mongoose-to-joi-translator/branch/master/graph/badge.svg?token=i5p2uk2acI)](https://codecov.io/gh/wearereasonablepeople/mongoose-to-joi-translator)
[![dependencies Status](https://david-dm.org/wearereasonablepeople/mongoose-to-joi-translator/status.svg)](https://david-dm.org/wearereasonablepeople/mongoose-to-joi-translator)
[![devDependencies Status](https://david-dm.org/wearereasonablepeople/mongoose-to-joi-translator/dev-status.svg)](https://david-dm.org/wearereasonablepeople/mongoose-to-joi-translator?type=dev)

### Description
Translates Mongoose schema to Joi. You can use Joi schema to do the validation. The idea is to write database models once and validate everywhere.

### Installation
```
npm install mongoose-to-joi-translator
```

### Supported validations

 1. All types
    * required
    * valid (enum validation)
    * default
 2. Strings
    * min
 3. Arrays
    * items (element types)
 4. Numbers
    * min
    * max
 5. Objects
 6. Dates
 7. ObjectIDs
 8. Booleans
 9. Custom sync validators as documented [here](http://mongoosejs.com/docs/validation.html#custom-validators)

Deeply nested document validation is supported, i.e. Objects within Objects, Arrays within Objects etc.

### Testing

```
npm test
```

### Usage
```
// Require the library
const getJoiSchema = require('mongoose-to-joi-translator');
const schema = new Schema({ word: { type: String } });
const ModelName = mongoose.model('ModelName', schema);
// Extract schema
const joiSchema = getJoiSchema(ModelName);
// Use Joi to validate
const { error, value } = Joi.validate({ word: 'hello' }, joiSchema);
```

---
_Source: https://npm.io/package/mongoose-to-joi-translator · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
