1.1.1 • Published 5 years ago
@jokio/monzo v1.1.1
@jokio/monzo
Library will help to work with mongodb
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
- Declare data structure
import { DocumentBase } from '@jokio/monzo'
export interface User extends DocumentBase {
email: string
passwordHash: string
fullname?: string
}
- Create repository object for declared type
import { getRepository } from '@jokio/monzo'
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')
- 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.
Number of Operations | Duration |
---|---|
1 | ~83 μs |
1 000 | |
1 000 000 | ~250 ms |