# mongo-repositories

> Tiny layer over mongoDB native driver to simplify queries, validation and indexing

Latest version **0.2.21** (published 2022-03-01) · MIT license · 4 weekly downloads

## Install

```sh
npm install mongo-repositories
pnpm add mongo-repositories
yarn add mongo-repositories
bun add mongo-repositories
```

## Health

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

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score; declining downloads.

## Facts

| | |
|---|---|
| Version | 0.2.21 |
| Published | 2022-03-01 |
| First published | 2021-04-22 |
| Weekly downloads | 4 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 39.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Khalid RAFIK |
| Maintainers | rafikalid2 |
| Keywords | MongoDB, repository, MongoDb, Native, validation, indexing |

## Links

- npm: https://www.npmjs.com/package/mongo-repositories
- Repository: https://github.com/rafikalid/mongo-repositories
- Homepage: https://github.com/rafikalid/mongo-repositories#readme
- Issues: https://github.com/rafikalid/mongo-repositories/issues
- npm.io page: https://npm.io/package/mongo-repositories

## Dependencies (1)

- [mongodb](https://npm.io/package/mongodb.md) ^4.1.3

## 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

- 0.2.21 (latest) — 2022-03-01
- 0.2.20 — 2022-03-01
- 0.2.19 — 2022-03-01
- 0.2.18 — 2022-02-23
- 0.2.17 — 2021-10-28
- 0.2.16 — 2021-10-08
- 0.2.15 — 2021-10-08
- 0.2.14 — 2021-10-08
- 0.2.13 — 2021-09-27
- 0.2.12 — 2021-09-17
- 0.2.11 — 2021-09-10
- 0.2.10 — 2021-08-03
- 0.2.9 — 2021-08-03
- 0.2.8 — 2021-08-02
- 0.2.7 — 2021-08-02
- … 14 more at https://npm.io/package/mongo-repositories/versions

## README

# mongo-repositories

Tiny layer over mongoDB native driver to simplify queries, validation and indexing

# Install

```shell
npm i -S mongo-repositories
```

# Get started

```javascript
const RepositoryFactory = require('mongo-repositories');
// OR: import RepositoryFactory from 'mongo-repositories';

const Repository = new RepositoryFactory({
	prefix: 'g-', // prefixing index names to be distinguishable
	/**
	 * Log logic
	 * @optional
	 * @default console.log
	 * @Set to "undefined" or "null" to disable logs
	 */
	log: undefined
});
```

## Connect to MongoDB

```javascript
/** @return Promise */
await Repository.connect('mongo://Connection_string');
```

## Disconnect from MongoDB

```javascript
/** @return Promise */
await Repository.close();
```

## Parse ObjectId from String

```javascript
/** @return Promise */
var id = Repository.parseObjectId('HexObjectId');
```

# Collection

## Create new Collection

```javascript
const Collection = Repository.from({
	name: 'collectionName',
	/** Set of used indexes */
	indexes: [
		{
			name: 'g-indexName' // must be prefixed with same defined Repository.prefix
			/** @See additional attributes from Mongo documentation */
		}
	],
	define: function (collection) {
		// Collection is the native mongo driver collection
		// @See mongo documentation for NodeJS native driver
		// at: http://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html
		return {
			myMethod(args) {
				/* Your logic */
			}
			// Your method will be accessible via: data= await MyCollection.myMethod(args);
		};
	}
});

// Collection will be accessible via:
const sameCollection = Repositories.all.collectionName;
```

## Predefined methods

```javascript
var MyCollection = Repository.from({
	/* logic */
});

/** Insert document */
await MyCollection.insertOne({ doc });

/** Insert list of documents */
await MyCollection.insertMany([{ doc }]);
```

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