Skip to main content

Getting Started with Entities

What's an Entity?

Entities are the natural place for abstractions from your domain. Usually big things like User, Order, Contract Agreement, Shopping Cart, Schedule, etc. are entities.

Entities have properties (fields), actions (methods) and often is uniquely identified by an ID.

Some entities in your domain need to be retrieved and persisted from a repository (ex: database). For that you can use a glue like herbs2knex or herbs2mongo.


$ npm install @herbsjs/herbs


This is an example of how to define an entity:


const { entity, field, id } = require('@herbsjs/herbs')

const User =
entity('User', {
id: id(Number),
name: field(String),
lastAccess: field(Date),
features: field([Feature]),
plan: field(Plan),
isAdmin() {
return false

Here is an example of how to create, load and validate an entity:

const user = new User() = "Beth"
user.plan.monthlyCost = 10
user.features = [
new Feature(),
new Feature(),
new Feature()