{"id":40960,"library":"esix","title":"Esix","description":"Esix is a type-safe MongoDB ORM for TypeScript and Node.js (v5.4.0, monthly releases). It provides an ActiveRecord-like interface with zero configuration: define models as TypeScript classes extending BaseModel, and get automatic CRUD, query builder with where/whereIn/orderBy/limit/skip, pagination, firstOrCreate, and relationship support (hasMany). Unlike Mongoose, it requires no schema definitions and ships TypeScript types natively. Requires Node >= 20, peer dependencies mongodb ^6.0.0 and mongo-mock ^4.0.0.","status":"active","version":"5.4.0","language":"javascript","source_language":"en","source_url":"https://github.com/Artmann/esix","tags":["javascript","mongodb","orm","typescript","esix","blazing-fast"],"install":[{"cmd":"npm install esix","lang":"bash","label":"npm"},{"cmd":"yarn add esix","lang":"bash","label":"yarn"},{"cmd":"pnpm add esix","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"MongoDB driver for database operations","package":"mongodb","optional":false},{"reason":"Mock MongoDB for testing","package":"mongo-mock","optional":true}],"imports":[{"note":"ESM-only since v5. Use named imports.","wrong":"const BaseModel = require('esix').BaseModel","symbol":"BaseModel","correct":"import { BaseModel } from 'esix'"},{"note":"Model is a named export, not default. Only BaseModel is available for class extension.","wrong":"import Model from 'esix'","symbol":"Model","correct":"import { Model } from 'esix'"},{"note":"No default export as of v5. Use namespace import.","wrong":"import esix from 'esix'","symbol":"esix (default)","correct":"import * as esix from 'esix'"}],"quickstart":{"code":"import { BaseModel } from 'esix';\n\nclass User extends BaseModel {\n  public name = '';\n  public email = '';\n  public age = 0;\n  public isActive = true;\n}\n\nasync function main() {\n  const dbUrl = process.env.DB_URL ?? 'mongodb://localhost:27017/myapp';\n  // Esix auto-connects using DB_URL env var\n  process.env.DB_URL = dbUrl;\n\n  // Create\n  const user = await User.create({ name: 'Alice', email: 'alice@example.com', age: 28 });\n  console.log('Created user:', user.id);\n\n  // Find by ID\n  const found = await User.find(user.id);\n  console.log('Found:', found?.name);\n\n  // Update\n  user.age = 29;\n  await user.save();\n\n  // Query\n  const activeUsers = await User.where('isActive', true).get();\n  console.log('Active users:', activeUsers.length);\n\n  // Delete\n  await user.delete();\n}\n\nmain().catch(console.error);","lang":"typescript","description":"Shows defining a model class extending BaseModel, and performing create, find, update, query, and delete operations."},"warnings":[{"fix":"Use ES module imports or upgrade to Node >= 20.","message":"Esix v5 requires Node >= 20 and is ESM-only. CommonJS require() will not work.","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Replace 'new User({...})' with 'await User.create({...})'.","message":"BaseModel no longer has a default constructor with arguments. Models must be instantiated using static create() or firstOrCreate().","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Use User.where({ isActive: true }).get() or User.where('isActive', true).get().","message":"The where() method with a function callback is deprecated. Use object syntax or chained where calls.","severity":"deprecated","affected_versions":">=5.2.0"},{"fix":"Set DB_URL environment variable before using any model methods, e.g., process.env.DB_URL = 'mongodb://...'.","message":"If DB_URL environment variable is not set, Esix throws at first database operation. No explicit connect() call needed.","severity":"gotcha","affected_versions":">=5.0.0"},{"fix":"Add your own validation logic in model methods or before saving.","message":"Esix does NOT support mongoose-style schema validation. All validation must be done manually.","severity":"gotcha","affected_versions":">=5.0.0"},{"fix":"Use const titles = await Post.pluck('title'); // returns string[]","message":"The 'pluck' method now returns an array of values directly. In v4 it returned an array of objects.","severity":"deprecated","affected_versions":">=5.0.0"}],"env_vars":null,"search_vec":"'20':62 '4.0.0':71 '6.0.0':66 'activerecord':21 'activerecord-lik':20 'automat':36 'basemodel':33 'blaze':78 'blazing-fast':77 'builder':39 'class':31 'configur':26 'crud':37 'defin':27 'definit':54 'depend':64 'esix':1,2,76 'extend':32 'fast':79 'firstorcr':43 'get':35 'hasmani':47 'interfac':23 'javascript':72 'like':22 'mock':70 'model':28 'mongo':69 'mongo-mock':68 'mongodb':8,65,73 'mongoos':49 'month':15 'nativ':59 'node':61 'node.js':13 'orm':9,74 'pagin':42 'peer':63 'provid':18 'queri':38 'relationship':45 'releas':16 'requir':51,60 'safe':7 'schema':53 'ship':56 'support':46 'type':6,58 'type-saf':5 'typescript':11,30,57,75 'unlik':48 'v5.4.0':14 'where/wherein/orderby/limit/skip':41 'zero':25","created_at":"2026-06-04T18:50:05.863132+00:00","updated_at":"2026-06-04T18:50:05.863132+00:00","problems":[{"fix":"Run 'npm install esix mongodb' (and optionally 'mongo-mock' for testing).","cause":"Missing peer dependency 'mongodb' or 'mongo-mock'.","error":"Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'esix'"},{"fix":"Change to import statement: import { BaseModel } from 'esix'. Ensure package.json has 'type':'module' or use .mjs extension.","cause":"Using CommonJS require() with ESM-only package (v5+).","error":"TypeError: Class extends value undefined is not a constructor or null"},{"fix":"Set a valid MongoDB connection string: export DB_URL=mongodb://localhost:27017/myapp","cause":"DB_URL environment variable missing or malformed.","error":"MongoParseError: Invalid connection string"},{"fix":"Use await User.create(...) not await user.create(...).","cause":"Trying to call create on an instance instead of the class.","error":"EsixError: Method create() must be called as static method"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://esix.netlify.app/","github":"https://github.com/Artmann/esix","docs":null,"changelog":null,"pypi":null,"npm":"esix","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}