https://github.com/jpb06/mongodb-generic-dal
A simple data layer for mongodb
https://github.com/jpb06/mongodb-generic-dal
data-access-layer mongodb nodejs
Last synced: 12 months ago
JSON representation
A simple data layer for mongodb
- Host: GitHub
- URL: https://github.com/jpb06/mongodb-generic-dal
- Owner: jpb06
- Created: 2020-12-21T12:52:41.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-21T17:02:21.000Z (about 5 years ago)
- Last Synced: 2025-02-12T21:39:02.957Z (12 months ago)
- Topics: data-access-layer, mongodb, nodejs
- Language: TypeScript
- Homepage:
- Size: 83 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# mongodb-generic-dal
   
## purpose
This is a little library built on top mongodb native nodejs driver.
The package exposes its own declaration files; you won't need to install any @types/\* if you use typescript.
## Installation
To install, use either yarn or npm:
```bash
yarn add mongodb-generic-dal
```
```bash
npm i mongodb-generic-dal
```
## Prerequisites
The module relies on env variables to connect to a mongodb instance:
- MONGODB_URL : any valid mongodb url - https://docs.mongodb.com/manual/reference/connection-string/
- MONGODB_DB : the database to connect to
- MONGODB_DB_USR : username (if authentication is required)
- MONGODB_DB_PWD : password (if authentication is required)
## Let's look at a code example
```Typescript
import * as GenericDal from "mongodb-generic-dal";
interface MyData {
_id?: ObjectId;
name: string;
value: number;
}
const letsCRUD = async () => {
const item = {
name: "Cool",
value: 1024
};
const id = await GenericDal.create("mycollection", item);
const persistedItem = await GenericDal.getBy("mycollection", { _id: id }, {});
const updatedItem = await GenericDal.createOrUpdate("mycollection", { _id: id }, {
name: "Yolo",
value: 0
});
const isDeleted = await GenericDal.remove("mycollection", {_id: id});
};
```
## API
### create
Inserts a document in the specified collection. Returns the id of the document inserted.
```Typescript
const create = async (
collectionName: string,
value: OptionalId
): Promise
```
### createOrUpdate
Either creates a new document or updates an existing one, depending on the presence of **term** in the collection.
```Typescript
const createOrUpdate = async (
collectionName: string,
term: object,
value: OptionalId
): Promise
```
### getAll
Fetches all the documents in a collection.
```Typescript
const getAll = async (
collectionName: string
): Promise>
```
### getBy
Fetches documents in collection matching **term**. Items can be sorted using **sort**; a limited number of documents can be returned by specifying **count**.
```Typescript
const getBy = async (
collectionName: string,
term: object,
sort: object,
count?: number
): Promise>
```
### clearAndCreateMany
Removes all documents matching **term** in collection, then inserts **values** in the collection.
```Typescript
const clearAndCreateMany = async (
collectionName: string,
term: object,
values: Array>
): Promise
```
### clearAllAndCreateMany
Removes all documents in collection, then inserts **values** in the collection.
```Typescript
const clearAllAndCreateMany = async (
collectionName: string,
values: Array>
): Promise
```
### remove
Removes the document matching **term** from the collection.
```Typescript
const remove = async (
collectionName: string,
term: object
): Promise
```