4.0.1 • Published 8 months ago

mango-repo v4.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

jok-mango CircleCI

Simplified way to work with MongoDB

platform: jokio npm version codecov

Features

✅ Stores _id: ObjectId field, but wraps it to the id: string

✅ Documents have version: number out of the box, and its increased by 1 every time you call update

✅ Every document has createdAt and updatedAt props

✅ Soft Delete & Hard Delete ability for documents

How to use

  1. Declare data structure
import { DocumentBase } from 'jok-mango'

export interface User extends DocumentBase {
	email: string
	passwordHash: string
	fullname?: string
}
  1. Create repository object for declared type
import { getRepository } from 'jok-mango'

const connectionString = `mongodb://mongo:mongo@localhost:27017/test?authSource=admin`
const client = new MongoClient(connectionString, { useNewUrlParser: true })

await client.connect()

const db = client.db()

const users = getRepository<User>(db, 'users')
  1. Use repository object
const user = await users.create({
	email: 'test@jok.io',
	passwordHash: 'strong-hash',
})

const { id, version } = user

const updatedUser = await users.update(
	{ id, version },
	{
		email: 'tester@jok.io',
	},
)

Performance Cost

Library calls _id.toHexString() for all retrieved items to have id: string and make developers life easier, so logical quetion is: How expensive operation is it.

Hardware: MacBook Pro (Retina, 15-inch, Mid 2014) Processor: 2.2 GHz Intel Core i7

Number of OperationsDuration
1~20 μs
1 000~829 μs
1 000 000~250 ms
4.0.1

8 months ago

4.0.0

8 months ago

3.3.3

2 years ago

3.3.1

2 years ago

3.2.1

2 years ago