{"library":"marpat","title":"Marpat","description":"Marpat is a lightweight ES6 class-based ODM (Object Document Mapper) for MongoDB and NeDB, forked from Camo. It provides a storage-agnostic document collection backend with schema validation via Joi since v3.0.0. Current stable version is 3.0.5, with a release cadence of several months. Supports hooks, embedded documents, counting, and custom database drivers. Key differentiators: ES6 class syntax, support for NeDB (file or in-memory) and MongoDB, integrated Joi validation, and a client registry for custom backends. Requires Node >=8.","language":"javascript","status":"active","last_verified":"Fri May 01","install":{"commands":["npm install marpat"],"cli":null},"imports":["const { Document } = require('marpat');","const { connect } = require('marpat');","const { EmbeddedDocument } = require('marpat');"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"const { connect, Document } = require('marpat');\n\nclass Animal extends Document {\n  constructor() {\n    super();\n    this.name = String;\n    this.species = String;\n    this.age = { type: Number, default: 0 };\n  }\n}\n\nasync function main() {\n  const database = await connect('nedb://memory');\n  const cat = Animal.create({ name: 'Fluffy', species: 'Cat' });\n  await cat.save();\n  console.log('Saved cat:', cat);\n  const found = await Animal.findOne({ name: 'Fluffy' });\n  console.log('Found cat:', found);\n  await database.close();\n}\n\nmain().catch(console.error);","lang":"javascript","description":"Demonstrates connecting to an in-memory NeDB database, defining a model class extending Document, creating and saving a document, and finding it back.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}