mutent-mongodb v1.0.0
mutent-mongodb
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 withdb,dbName, andclientoptions.[db]:<Db>Database instance. You must specify also thecollectionNameoption.[dbName]:<String>Database's name. You must specify alsocollectionName, andclientoptions.[client]:<MongoClient>MongoDB client instance. You must specify alsocollectionName, anddbNameoptions.[filterQuery]:<Function>Filter query generation hook. Accepts theEntityinstance and itsContext, and returns the filter query that matches the requested document. By default match by_idfield.[diffDocuments]:<Function>|<Boolean>[allowLostUpdates]:<Boolean>Set totrueto allow (do not throw) lost updates and also flat the entity as orphaned (entity.meta.orphan = true).[allowLostDeletes]:<Boolean>Set totrueto 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 year ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago