1.0.0 • Published 10 months ago

mutent-mongodb v1.0.0

Weekly downloads
31
License
MIT
Repository
github
Last release
10 months ago

mutent-mongodb

npm JavaScript Style Guide ci Coverage Status

Mutent's Adapter for MongoDB.

Features

  • Lost update/delete protection
  • Bulk update optimization: when possible, bulk updates are used
  • ESM and Common.js: both module systems are supported
  • TypeScript: native support (types declaration included)

API

new MongoAdapter(options)

Class constructor.

  • options: <Object>
    • [collection]: <Collection> The collection instance to use. This option has the top priority.
    • [collectionName]: <String> Collection's name. This option works along aside with db, dbName, and client options.
    • [db]: <Db> Database instance. You must specify also the collectionName option.
    • [dbName]: <String> Database's name. You must specify also collectionName, and client options.
    • [client]: <MongoClient> MongoDB client instance. You must specify also collectionName, and dbName options.
    • [filterQuery]: <Function> Filter query generation hook. Accepts the Entity instance and its Context, and returns the filter query that matches the requested document. By default match by _id field.
    • [diffDocuments]: <Function> | <Boolean>
    • [allowLostUpdates]: <Boolean> Set to true to allow (do not throw) lost updates and also flat the entity as orphaned (entity.meta.orphan = true).
    • [allowLostDeletes]: <Boolean> Set to true to allow (do not throw) lost deletes and also flat the entity as orphaned (entity.meta.orphan = true).
  • Returns: <MongoAdapter>

MongoAdapter::raw

Readonly property containing the requested MongoDB's Collection instance.

Unwrap options

All available options from the following MongoDB methods:

Errors

MongoDB related (MutentError instances) error codes.

MONGODB_LOST_UPDATE

Lost update detected (single document).

This error carries those extra info (error.info object):

  • dbName: Database's name.
  • collectionName: Collection's name.
  • filterQuery: Filter's query that has performed the lost update.
  • document: The original document retrieved from MongoDB previously.

MONGODB_LOST_DELETE

Lost delete detected (single document).

This error carries those extra info (error.info object):

  • dbName: Database's name.
  • collectionName: Collection's name.
  • filterQuery: Filter's query that has performed the lost update.
  • document: The original document retrieved from MongoDB previously.

MONGODB_LOST_UPDATES

Lost update detected during a bulk write.

This error carries those extra info (error.info object):

  • dbName: Database's name.
  • collectionName: Collection's name.
  • matchedCount: Number of documents matched by the bulk write.
  • upsertedCount: Number of documents upserted by the bulk write.
  • expectedUpdations: Expected number of insert/update ops.

MONGODB_LOST_DELETES

Lost delete detected during a bulk write.

This error carries those extra info (error.info object):

  • dbName: Database's name.
  • collectionName: Collection's name.
  • deletedCount: Number of deleted documents.
  • expectedDeletions: Expected number of delete ops.

Example

import { MongoClient } from 'mongodb'
import { Store } from 'mutent'
import MongoAdapter from 'mutent-mongodb'

const client = new MongoClient(process.env.MONGO_URL)

await client.connect()

const store = new Store({
  adapter: new MongoAdapter({
    client,
    dbName: 'my-database',
    collectionName: 'my-collection'
  })
})

// Access the raw Collection instance
const count = await store.raw.countDocuments()

const doc = await store
  .create({ my: 'document' })
  .unwrap()

console.log(`Created document ${doc._id}`)
1.0.0

10 months ago

0.13.1

1 year ago

0.13.0

1 year ago

0.12.0

2 years ago

0.11.0

3 years ago

0.11.1

3 years ago

0.10.1

4 years ago

0.10.2

4 years ago

0.10.0

4 years ago

0.9.0

4 years ago

0.8.3

4 years ago

0.8.2

5 years ago

0.8.1

5 years ago

0.8.0

5 years ago

0.7.0

5 years ago

0.6.0

5 years ago

0.5.0

5 years ago

0.3.0

5 years ago

0.4.0

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago