{"id":42903,"library":"js-core-data","title":"js-core-data","description":"js-core-data (v1.10.0) is a JavaScript ORM inspired by Apple's CoreData. It simplifies data modeling, version migration, entity management, and persistence by providing a context-based interface similar to CoreData, adapted for server environments. Supports SQLite, MySQL, and PostgreSQL via separate database drivers. Release cadence is low; last update was several years ago. Key differentiator: uses CoreData-like patterns (managed object contexts, relationships, inverse relationships) not found in typical JavaScript ORMs. Suitable for Node.js projects needing an ActiveRecord-style ORM with automated schema syncing.","status":"maintenance","version":"1.10.0","language":"javascript","source_language":"en","source_url":"https://github.com/jakubknejzlik/js-core-data","tags":["javascript","ORM","CoreData","object relational mapper","context","sqlite","mysql"],"install":[{"cmd":"npm install js-core-data","lang":"bash","label":"npm"},{"cmd":"yarn add js-core-data","lang":"bash","label":"yarn"},{"cmd":"pnpm add js-core-data","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for MySQL database support","package":"mysql","optional":true},{"reason":"Required for SQLite database support","package":"sqlite3","optional":true},{"reason":"Required for PostgreSQL database support","package":"pg","optional":true}],"imports":[{"note":"Library ships CJS; default export via require works, but no named exports exist.","wrong":"var CoreData = require('js-core-data').default","symbol":"CoreData","correct":"import CoreData from 'js-core-data'"},{"note":"CommonJS usage; the main export is a constructor function, not a named export.","wrong":"const { CoreData } = require('js-core-data')","symbol":"default import","correct":"const CoreData = require('js-core-data')"},{"note":"No official TypeScript types; use @types/js-core-data or define types manually.","wrong":"import { CoreData } from 'js-core-data'","symbol":"TypeScript usage","correct":"import CoreData from 'js-core-data'; \n // No type definitions provided"}],"quickstart":{"code":"const CoreData = require('js-core-data');\n\nconst db = new CoreData('sqlite://:memory:');\n\nconst User = db.define('User', { username: 'string' });\nconst Company = db.define('Company', { name: 'string' });\n\ndb.defineRelationship(User, Company, 'company', { inverse: 'users' });\ndb.defineRelationship(Company, User, 'users', { inverse: 'company', toMany: true });\n\ndb.syncSchema({ force: true }).then(() => {\n  const context = db.createContext();\n  const user1 = context.create('User', { username: 'user1' });\n  const user2 = context.create('User', { username: 'user2' });\n  const company = context.create('Company', { name: 'test company' });\n  user1.setCompany(company);\n  company.addUser(user2);\n  context.save().then(() => {\n    console.log('Data saved');\n    context.destroy();\n  });\n}).catch(err => console.error(err));","lang":"javascript","description":"Demonstrates setting up an in-memory SQLite database, defining entities with relationships, syncing schema, creating a context, manipulating objects, and saving."},"warnings":[{"fix":"npm install --save mysql (or sqlite3, pg)","message":"Database driver packages must be installed separately.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Update to use string for relationship name: e.g., `defineRelationship(User, Company, 'company', {...})`","message":"In v1.6.0, `defineRelationship` signature changed. The third parameter was changed from 'object' to 'string'.","severity":"breaking","affected_versions":"<1.6.0"},{"fix":"Use `{ dropTables: true }` instead of `{ force: true }`.","message":"The `syncSchema` method's `force` option is deprecated in favor of `dropTables: true`.","severity":"deprecated","affected_versions":">=1.8.0"},{"fix":"Always await or chain .then() on these methods.","message":"Context methods `create`, `save`, and `destroy` are asynchronous and return Promises.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure relationship names match exactly: e.g., `company.addUser(user2)` works if 'users' relationship is defined with `toMany: true`.","message":"Relationship methods like `addUser` are generated dynamically; misnaming them causes runtime errors.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'activerecord':88 'activerecord-styl':87 'adapt':39 'ago':61 'appl':16 'autom':92 'base':34 'cadenc':53 'context':33,71,101 'context-bas':32 'core':3,7 'coredata':18,38,66,97 'coredata-lik':65 'data':4,8,21 'databas':50 'differenti':63 'driver':51 'entiti':25 'environ':42 'found':76 'inspir':14 'interfac':35 'invers':73 'javascript':12,79,95 'js':2,6 'js-core-data':1,5 'key':62 'last':56 'like':67 'low':55 'manag':26,69 'mapper':100 'migrat':24 'model':22 'mysql':45,103 'need':85 'node.js':83 'object':70,98 'orm':13,80,90,96 'pattern':68 'persist':28 'postgresql':47 'project':84 'provid':30 'relat':99 'relationship':72,74 'releas':52 'schema':93 'separ':49 'server':41 'sever':59 'similar':36 'simplifi':20 'sqlite':44,102 'style':89 'suitabl':81 'support':43 'sync':94 'typic':78 'updat':57 'use':64 'v1.10.0':9 'version':23 'via':48 'year':60","created_at":"2026-06-05T16:57:13.614755+00:00","updated_at":"2026-06-05T16:57:13.614755+00:00","problems":[{"fix":"Run: npm install --save sqlite3","cause":"Database driver not installed.","error":"Error: Cannot find module 'sqlite3'"},{"fix":"Use const CoreData = require('js-core-data'); then new CoreData(...)","cause":"Incorrect import (e.g., using named import instead of default).","error":"TypeError: db.define is not a function"},{"fix":"Use syncSchema({ dropTables: true }) to drop and recreate tables.","cause":"Calling syncSchema without force or dropTables after initial creation.","error":"Error: schema sync failed - Table 'users' already exists"},{"fix":"Provide all required fields when creating or update entity with missing fields.","cause":"Entity defined with required attribute but not provided.","error":"ValidationError: required field 'username' missing"}],"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://github.com/jakubknejzlik/js-core-data#readme","github":"https://github.com/jakubknejzlik/js-core-data","docs":null,"changelog":null,"pypi":null,"npm":"js-core-data","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-05","next_check":"2026-09-03","install_tag":null}}