Description
Generates and parses BSON UUIDs for use with MongoDB and Mongoose. BSON UUIDs provide better performance than their string counterparts.
uuid-mongodb alternatives and similar modules
Based on the "ODM / ORM" category.
Alternatively, view uuid-mongodb alternatives based on common mentions on social networks and blogs.
-
SheetJS js-xlsx
📗 SheetJS Spreadsheet Data Toolkit -- New home https://git.sheetjs.com/SheetJS/sheetjs -
TypeORM
ORM for TypeScript and JavaScript. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Electron platforms. -
Sequelize
Feature-rich ORM for modern Node.js and TypeScript, it supports PostgreSQL (with JSON and JSONB support), MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle DB (v6), DB2 and DB2 for IBM i. -
MikroORM
TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases. -
Waterline
An adapter-based ORM for Node.js with support for mysql, mongo, postgres, mssql (SQL Server), and more -
SignalDB
SignalDB is a local JavaScript database with a MongoDB-like interface and TypeScript support, enabling optimistic UI with signal-based reactivity across multiple frameworks. It integrates easily with libraries like Angular, Solid.js, Preact, and Vue, simplifying data management with schema-less design, in-memory storage, and fast queries. -
@Sugoi\orm
SugoiJS ORM module typescript based - Simple solution for object handling with predefined lifecycle
SaaSHub - Software Alternatives and Reviews
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of uuid-mongodb or a related project?
README
uuid-mongodb
Generates and parses BSON UUIDs for use with MongoDB. BSON UUIDs provide better performance than their string counterparts.
Inspired by @srcagency's mongo-uuid
Install
npm install uuid-mongodb
Usage
const MUUID = require('uuid-mongodb');
# Create a v1 binary UUID
const mUUID1 = MUUID.v1();
# Create a v4 binary UUID
const mUUID4 = MUUID.v4();
# Print a string representation of a binary UUID
mUUID1.toString()
# Create a binary UUID from a valid uuid string
const mUUID2 = MUUID.from('393967e0-8de1-11e8-9eb6-529269fb1459')
# Create a binary UUID from a MongoDb Binary
# This is useful to get MUUIDs helpful toString() method
const mUUID3 = MUUID.from(/** MongoDb Binary of SUBTYPE_UUID */)
Formatting
UUIDs may be formatted using the following options:
Format | Description | Example |
---|---|---|
N | 32 digits | 00000000000000000000000000000000 |
D | 32 digits separated by hyphens | 00000000-0000-0000-0000-000000000000 |
B | 32 digits separated by hyphens, enclosed in braces | {00000000-0000-0000-0000-000000000000} |
P | 32 digits separated by hyphens, enclosed in parentheses | (00000000-0000-0000-0000-000000000000) |
example:
const mUUID4 = MUUID.v4();
mUUID1.toString(); // equivalent to `D` separated by hyphens
mUUID1.toString('P'); // enclosed in parens, separated by hypens
mUUID1.toString('B'); // enclosed in braces, separated by hyphens
mUUID1.toString('N'); // 32 digits
Modes
uuid-mongodb offers two modes:
- canonical (default) - A string format that emphasizes type preservation at the expense of readability and interoperability.
- relaxed - A string format that emphasizes readability and interoperability at the expense of type preservation.
The mode is set globally as such:
const mUUID = MUUID.mode('relaxed'); // use relaxed mode
Mode only impacts how JSON.stringify(...)
represents a UUID:
e.g. JSON.stringy(mUUID.v1())
outputs the following:
"DEol4JenEeqVKusA+dzMMA==" // when in 'canonical' mode
"1ac34980-97a7-11ea-8bab-b5327b548666" // when in 'relaxed' mode
Examples
Query using binary UUIDs
const uuid = MUUID.from('393967e0-8de1-11e8-9eb6-529269fb1459');
return collection.then(c =>
c.findOne({
_id: uuid,
})
);
Work with binary UUIDs returned in query results
return collection
.then(c => c.findOne({ _id: uuid }))
.then(doc => {
const uuid = MUUID.from(doc._id).toString();
// do stuff
});
Examples (with source code)
Native Node MongoDB Driver example
[examples/ex1-mongodb.js](examples/ex1-mongodb.js)
snippet:
const insertResult = await collection.insertOne({ _id: MUUID.v1(), name: 'carmine', });
Mongoose example
[examples/ex2-mongoose.js](examples/ex2-mongoose.js)
snippet:
const kittySchema = new mongoose.Schema({ _id: { type: 'object', value: { type: 'Buffer' }, default: () => MUUID.v1(), }, title: String, });
[examples/ex3-mongoose.js](examples/ex3-mongoose.js)
snippet:
// Define a simple schema const kittySchema = new mongoose.Schema({ _id: { type: 'object', value: { type: 'Buffer' }, default: () => MUUID.v1(), }, title: String, }); // no need for auto getter for _id will add a virtual later kittySchema.set('id', false); // virtual getter for custom _id kittySchema .virtual('id') .get(function() { return MUUID.from(this._id).toString(); }) .set(function(val) { this._id = MUUID.from(val); });
[examples/ex4-mongoose.js](examples/ex4-mongoose.js)
const uuid = MUUID.v4();
// save record and wait for it to commit
await new Data({ uuid }).save();
// retrieve the record
const result = await Data.findOne({ uuid });
Notes
Currently supports UUID v1 and v4
Contributors
Thanks goes to these wonderful people (emoji key):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore --> Carmine DiMascio💻Benjamin Dobell💻 David Pfeffer💻
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the all-contributors specification. Contributions of any kind welcome!
License
[MIT](./LICENSE)
*Note that all licence references and agreements mentioned in the uuid-mongodb README section above
are relevant to that project's source code only.