mongad
v0.2.2
Published
A monadic wrapper for MongoDB
Downloads
12
Maintainers
Readme
Mon(g)ad is a thin layer wrapping MongoDB CRUD operations in data types from fp-ts.
Installation
Add Mon(g)ad and its peerDependencies to your project via npm or yarn.
yarn add mongad mongodb
npm install mongad mongodb --save
API
Mon(g)ad provides two functions for each CRUD operation, one for a single document and one for an array of documents.
connect
connect
establishes a connection to a MongoDB, wrapping MongoDB's connect method.
connect(uri: string, options?: MongoClientOptions }) => TaskEither<MongoError, MongoClient>
{ useNewUrlParser: true, useUnifiedTopology: true }
is used a default for MongoClientOptions
.
Example:
import { connect } from 'mongad'
const client = connect('mongodb://localhost')()
getDb
getDb
is a curried function to retrieve a Db from a MongoClient
.
getDb(db: string) => (client: MongoClient) => Db
Example:
import { map } from 'fp-ts/lib/TaskEither'
import { connect, getDb } from 'mongad'
const todosDb = map(getDb('todo_db'))(connect('mongodb://localhost'))()
findOne
findOne
retrives one document matching the query from the collection or null, wraping MongoDB's findOne.
findOne<T>(collection: string, query: FilterQuery<T>, options?: FindOneOptions) => ReaderTaskEither<Db, MongoError, T | null>
Example:
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { findOne } from 'mongad'
const todo1 = run(findOne('todos', { _id: '1' }), db)
findMany
findMany
retrieves an array of documents matching the query from the collection, wrapping MongoDB's find.
findMany<T>(collection: string, query: FilterQuery<T>, options?: FindOneOptions) => ReaderTaskEither<Db, MongoError, T[]>
Example:
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { findMany } from 'mongad'
const openTodos = run(findMany('todos', { done: false }), db)
insertOne
insertOne
adds the provided document to the collection and returns it including the _id
, wrapping MongoDB's insertOne.
insertOne<T>(collection: string, document: T, options?: CollectionInsertOneOptions) => ReaderTaskEither<Db, MongoError, WithId<T>>
Example:
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { insertOne } from 'mongad'
const newTodo = run(
insertOne('todos', { description: 'Do something', done: false }),
db
)
insertMany
insertMany
adds all of the provided documents to the collection and returns them as an array including the _id
s, wrapping MongoDB's insertMany.
insertMany<T>(collection: string, documents: T[], options?: CollectionInsertManyOptions) => ReaderTaskEither<Db, MongoError, T[]>
Example:
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { insertMany } from 'mongad'
const newTodos = run(
insertMany('todos', [
{ description: 'Do something', done: false },
{ description: 'Something else ', done: false },
]),
db
)
updateOne
updateOne
updates one document matching the query in the collection with the provided changes and returns the updated document, wrapping MongoDB's updateOne.
updateOne<T>(collection: string, query: FilterQuery<T>, update: Update<T>, options?: UpdateOneOptions) => ReaderTaskEither<Db, MongoError, T | null>
Example:
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { updateOne } from 'mongad'
const updatedTodo = run(
updateOne('todos', { _id: '1' }, { $set: { done: true } }),
db
)
updateMany
updateMany
updates all of the documents matching the query in the collection with the provided changes and returns the updated documents as array, wrapping MongoDB's updateMany.
updateMany<T>(collection: string, query: FilterQuery<T>, update: Update<T>, options?: UpdateManyOptions) => ReaderTaskEither<Db, MongoError, T[]>
Example:
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { updateMany } from 'mongad'
const updatedTodos = run(
updateMany('todos', { done: false }, { $set: { done: true } }),
db
)
deleteOne
deleteOne
removes one document matching the query from the collection returning the deleted document, wrapping MongoDB's deleteOne.
deleteOne<T>(collection: string, query: FilterQuery<T>, options?: DeleteOneOptions) => ReaderTaskEither<Db, MongoError, T | null>
Example:
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { deleteOne } from 'mongad'
const removedTodo = run(deleteOne('todos', { _id: '1' }), db)
deleteMany
deleteOne
removes all documents matching the query from the collection returning the deleted documents as an array, wrapping MongoDB's deleteMany.
deleteMany<T>(collection: string, query: FilterQuery<T>, options?: DeleteManyOptions) => ReaderTaskEither<Db, MongoError, T[]>
Example:, options?: FindOneOptions
import { run } from 'fp-ts/lib/ReaderTaskEither'
import { deleteMany } from 'mongad'
const removedTodos = run(deleteMany('todos', { done: true }), db)
This project was bootstrapped with TSDX.