mongoose-uuid-ts
v1.0.4
Published
uuid for mongoose
Downloads
77
Readme
Mongoose UUID Schema Type
This is a custom schema type for Mongoose that allows storing and manipulating UUID (Universally Unique Identifier) values as buffers in MongoDB. It extends the existing UUID
schema type provided by Mongoose.
Installation
To use the UUIDSchemaType
, you need to have Mongoose and the uuid
package installed in your project.
npm install mongoose uuid
Usage
- Import the required dependencies:
import mongoose from "mongoose";
import { v4 as uuidv4, validate as uuidValidate } from "uuid";
import { Buffer } from "buffer";
- Define the
UUIDSchemaType
class, extending theUUID
schema type provided by Mongoose:
class UUIDSchemaType extends mongoose.Schema.Types.UUID {
// Custom implementation of the UUID schema type
// ...
}
Implement the necessary methods (
cast
,castForQuery
,get
,checkRequired
) in theUUIDSchemaType
class according to your requirements. These methods handle the casting, querying, getting, and validation of UUID values.Register the
UUIDSchemaType
with Mongoose:
mongoose.Schema.Types.UUID = UUIDSchemaType;
- Now, you can use the
UUID
schema type in your Mongoose schemas:
const MySchema = new mongoose.Schema({
uuidField: {
type: mongoose.Schema.Types.UUID,
required: true,
},
// ...
});
Example
Here's an example demonstrating the usage of the UUIDSchemaType
:
// Import necessary dependencies and define UUIDSchemaType
// ...
// Add UUID to Mongoose Schema types
mongoose.Schema.Types.UUID = UUIDSchemaType;
// Create a sample schema
const UserSchema = new mongoose.Schema({
id: {
type: mongoose.Schema.Types.UUID,
default: () => uuidv4(),
},
name: String,
});
// Create a model using the schema
const User = mongoose.model("User", UserSchema);
// Create a new user
const newUser = new User({
name: "John Doe",
});
// Save the user to the database
newUser.save()
.then((user) => {
console.log("User created:", user);
})
.catch((error) => {
console.error("Error creating user:", error);
});
License
This code is provided under the MIT License.
Contributing
Contributions are welcome! If you find any issues or have suggestions for improvement, please open an issue or submit a pull request on GitHub.
Credits
This custom schema type is developed and maintained by Anshul Rai.
Resources
Feel free to modify and enhance the README as per your specific requirements and preferences.