0.1.1 • Published 1 year ago

mongozod v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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 .
0.1.0

1 year ago

0.0.1

1 year ago

0.0.3

1 year ago

0.1.1

1 year ago

0.0.2

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago