0.1.1 • Published 1 year ago
mongozod v0.1.1
mongozod
Adds hooks to all the native MongoDB nodejs drivers CRUD methods, and uses validation and typing from the Zod library.
Getting started
Install
npm i mongozod zod mongodb
npm i -D ts-node
Code snippet - index.ts
import { MongoClient, ObjectId } from "mongodb";
import { MongozodCollection, zObjectId } from "mongozod";
import { z } from "zod";
const mongoClient = new MongoClient("mongodb://localhost:27017");
const database = mongoClient.db("mongozod-test");
// create a zod object/union; THE TOP VALIDATOR SHOULD BE A ZOD OBJECT ! (:
const userSchema = z.union([
z.object({
type: z.literal("user"),
_id: zObjectId,
name: z.string(),
email: z.string().email(),
}),
z.object({
type: z.literal("admin"),
_id: zObjectId,
name: z.string(),
email: z.string().email(),
role: z.string(),
}),
]);
type User = z.infer<typeof userSchema>;
// create a mongozod collection
const userCollection = new MongozodCollection<User>("users", {
database,
schema: userSchema,
});
const main = async () => {
const user: User = {
type: "user",
_id: new ObjectId(),
name: "John Doe",
email: "john@doe.example",
};
const result = await userCollection.insertOne(user);
const userDocument = await userCollection.findOne({ _id: result.insertedId });
console.log(userDocument);
};
main();
Run
npx ts-node .