Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/plexinc/papr

MongoDB TypeScript-aware Models
https://github.com/plexinc/papr

json-schema mongodb schema typescript validation

Last synced: about 1 month ago
JSON representation

MongoDB TypeScript-aware Models

Awesome Lists containing this project

README

        

# Papr


Papr

---

- TypeScript-safe schemas
- JSON Schema MongoDB validation
- :tada: Lightweight library
- :rocket: Blazing fast

---

[![Github Actions](https://github.com/plexinc/papr/actions/workflows/ci.yaml/badge.svg)](https://github.com/plexinc/papr/actions)
[![NPM version](https://img.shields.io/npm/v/papr.svg?style=flat)](https://www.npmjs.com/package/papr)
[![Install size](https://packagephobia.now.sh/badge?p=papr)](https://packagephobia.now.sh/result?p=papr)

`papr` is a lightweight library built around the MongoDB NodeJS driver, written in TypeScript.

`papr` uses MongoDB's [JSON Schema validation](https://docs.mongodb.com/manual/core/schema-validation/#json-schema) feature to enable validation of document writes at runtime (requires MongoDB 3.6+).

`papr` has a familiar API - if you have used the raw `mongodb` methods to query and change documents before, then you already know how to use `papr`.

## Sample code

```ts
import Papr, { schema, types } from 'papr';

const papr = new Papr();

const User = papr.model('users', schema({
age: types.number(),
firstName: types.string({ required: true }),
lastName: types.string({ required: true }),
}));

const johnWick = await User.find({ firstName: 'John', lastName: 'Wick' });
```

## Documentation

Read the documentation at: [plexinc.github.io/papr](https://plexinc.github.io/papr/)

## Contributing

Please read the [contributing](CONTRIBUTING.md) guidelines.

Before contributing, please read the [Code of conduct](CODE_OF_CONDUCT.md).

## License

MIT

## Inspiration

- [Mongoose](https://mongoosejs.com/)
- [ts-mongoose](https://github.com/lstkz/ts-mongoose)