mongooat
v2.2.18
Published
TypeScript utility for validating MongoDB models with Zod schemas.
Maintainers
Readme
Mongooat
Mongooat is a TypeScript utility that combines Zod schemas with MongoDB, providing a straightforward method for model validation and type inference.
Installation
Install mongooat using npm:
npm install mongooatUsage
Import Mongooat
To get started, import the Mongooat and Zod from mongooat:
import { Mongooat, z } from "mongooat";Connecting to MongoDB
Create a new Mongooat instance and connect to your MongoDB database:
const mongooat = new Mongooat("mongodb://localhost:27017");Switching Databases
Switch between databases using the useDb method:
mongooat.useDb("mydb");Defining a Model
Define a model using a Zod schema:
const UserModel = mongooat.Model(
"users",
z.object({
name: z.string(),
age: z.number().optional(),
})
);Performing Database Operations
With the defined model, you can now perform operations like finding documents:
const users = await UserModel.find();You can use other operations like findById(), insertOne(), deleteOne(), etc.
const user = await UserModel.findById("userId");Type Inference
Extract TypeScript type by inferring the type of any model with Mongooat.infer<typeof Model>.
type modelType = Mongooat.infer<typeof UserModel>;
// type ts = { name: string; age?: number | undefined; }Accessing Dot-Notation Paths
Extract type-safe paths for nested properties in your schema using Mongooat.paths<typeof Model>:
type modelPaths = Mongooat.paths<typeof UserModel>;
// type modelPaths = ("name" | "age")[]For arrays, the key path will include the array index. If you use <idx> as the index key, it will refer to every element in the array.
Note: This is not yet support nested maps, sets, and records (e.g. Map<string, {test: string}>).
Contact
Acknowledgments
Credits to:
License
This project is licensed under the MIT License. See the LICENSE file for details.
