jpb06 / mongodb-generic-dal

A simple data layer for mongodb

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mongodb-generic-dal

Statements Branches Functions Lines

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:

yarn add mongodb-generic-dal
npm i mongodb-generic-dal

Prerequisites

The module relies on env variables to connect to a mongodb instance:

Let's look at a code example

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<MyData>("mycollection", item);
   const persistedItem = await GenericDal.getBy<MyData>("mycollection", { _id: id }, {});
   const updatedItem = await GenericDal.createOrUpdate<MyData>("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.

const create = async <T>(
   collectionName: string,
   value: OptionalId<T>
): Promise<ObjectId | undefined>

createOrUpdate

Either creates a new document or updates an existing one, depending on the presence of term in the collection.

const createOrUpdate = async <T>(
  collectionName: string,
  term: object,
  value: OptionalId<T>
): Promise<T | undefined>

getAll

Fetches all the documents in a collection.

const getAll = async <T>(
   collectionName: string
): Promise<Array<T>>

getBy

Fetches documents in collection matching term. Items can be sorted using sort; a limited number of documents can be returned by specifying count.

const getBy = async <T>(
  collectionName: string,
  term: object,
  sort: object,
  count?: number
): Promise<Array<T>>

clearAndCreateMany

Removes all documents matching term in collection, then inserts values in the collection.

const clearAndCreateMany = async <T>(
  collectionName: string,
  term: object,
  values: Array<OptionalId<T>>
): Promise<boolean>

clearAllAndCreateMany

Removes all documents in collection, then inserts values in the collection.

const clearAllAndCreateMany = async <T>(
  collectionName: string,
  values: Array<OptionalId<T>>
): Promise<boolean>

remove

Removes the document matching term from the collection.

const remove = async <T>(
  collectionName: string,
  term: object
): Promise<boolean>

About

A simple data layer for mongodb


Languages

Language:TypeScript 98.7%Language:JavaScript 1.3%