Skip to content

epiphanysxp/uuid-mongodb

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

119 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

uuid-mongodb

Codacy Badge All Contributors

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 */)

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

  • example/ex1-mongodb.js

    snippet:

     const insertResult = await collection.insertOne({
       _id: MUUID.v1(),
       name: 'carmine',
     });

Mongoose example

  • example/ex2-mongoose.js

    snippet:

     const kittySchema = new mongoose.Schema({
       _id: {
         type: 'object',
         value: { type: 'Buffer' },
         default: () => MUUID.v1(),
       },
       title: String,
     });
  • example/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);
       });

Notes

Currently supports UUID v1 and v4

Contributors

Thanks goes to these wonderful people (emoji key):

Carmine DiMascio
Carmine DiMascio

πŸ’»
Benjamin Dobell
Benjamin Dobell

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT

Buy Me A Coffee

About

ADDED toJSON() for uuid formatting - πŸ“‡ Generates and parses MongoDB BSON UUIDs

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 100.0%