{"id":45443,"library":"modinha-redis","title":"modinha-redis","description":"RedisDocument mixin for Modinha models providing HTTP-semantic persistence methods backed by Redis hashes and sorted sets. v0.1.0 is a stable release from 2018 with 0.1.1 on GitHub. Designed for Node.js, it maps CRUD operations (list, get, insert, replace, patch, delete) onto Redis data structures and auto-generates unique/secondary index getters. The package adds _id, created, and modified fields to schemas. It is a thin, opinionated layer for Redis-backed document modeling, distinct from full ORMs.","status":"active","version":"0.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/anvilresearch/modinha-redis","tags":["javascript"],"install":[{"cmd":"npm install modinha-redis","lang":"bash","label":"npm"},{"cmd":"yarn add modinha-redis","lang":"bash","label":"yarn"},{"cmd":"pnpm add modinha-redis","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required peer dependency; the mixin extends Modinha models.","package":"modinha","optional":false},{"reason":"Required runtime dependency for Redis client.","package":"redis","optional":false}],"imports":[{"note":"CommonJS require works if using default Node.js; switch to ESM import in modern setups.","wrong":"var RedisDocument = require('modinha-redis').RedisDocument","symbol":"RedisDocument","correct":"import { RedisDocument } from 'modinha-redis'"},{"note":"No default export; only named export RedisDocument exists.","wrong":"undefined","symbol":"default","correct":"import modinhaRedis from 'modinha-redis'"},{"note":"require returns an object with RedisDocument property, not the mixin directly.","wrong":"const RedisDocument = require('modinha-redis')","symbol":"RedisDocument","correct":"const { RedisDocument } = require('modinha-redis')"}],"quickstart":{"code":"// npm install modinha modinha-redis redis\nvar Modinha = require('modinha');\nvar RedisDocument = require('modinha-redis').RedisDocument;\n\nvar Account = Modinha.define('accounts', {\n  email: { type: 'string', required: true, unique: true },\n  role:  { type: 'string', secondary: true, enum: ['admin', 'editor', 'author'] },\n  hash:  { type: 'string', private: true }\n});\n\n// Extend model with Redis persistence\nAccount.extend(RedisDocument);\n\n// Insert a new account\nAccount.insert({ email: 'test@example.com', role: 'admin' }, function(err, result) {\n  if (err) console.error(err);\n  else console.log('Inserted:', result);\n});\n\n// List by role\nAccount.listByRole('admin', function(err, accounts) {\n  if (err) console.error(err);\n  else console.log('Admins:', accounts);\n});\n\n// Get by unique email\nAccount.getByEmail('test@example.com', function(err, account) {\n  if (err) console.error(err);\n  else console.log('Account:', account);\n});","lang":"javascript","description":"Shows how to define a Modinha model with unique/secondary indexes, extend with RedisDocument mixin, insert a record, and use auto-generated query methods."},"warnings":[{"fix":"Use destructuring: const { RedisDocument } = require('modinha-redis');","message":"No default export: require() returns an object, not the mixin directly.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Ensure redis.createClient() is called and available before using mixin.","message":"Redis client setup not included: The mixin expects a global redis client or environment variable; no built-in connection handling.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Review GitHub releases for breaking changes.","message":"Version 0.1.0 may have breaking changes from earlier unpublished versions; check changelog.","severity":"breaking","affected_versions":"=0.1.0"}],"env_vars":null,"search_vec":"'0.1.1':30 '2018':28 'add':59 'auto':52 'auto-gener':51 'back':15,76 'creat':61 'crud':38 'data':48 'delet':45 'design':33 'distinct':79 'document':77 'field':64 'full':81 'generat':53 'get':41 'getter':56 'github':32 'hash':18 'http':11 'http-semant':10 'id':60 'index':55 'insert':42 'javascript':83 'layer':72 'list':40 'map':37 'method':14 'mixin':5 'model':8,78 'modifi':63 'modinha':2,7 'modinha-redi':1 'node.js':35 'onto':46 'oper':39 'opinion':71 'orm':82 'packag':58 'patch':44 'persist':13 'provid':9 'redi':3,17,47,75 'redis-back':74 'redisdocu':4 'releas':26 'replac':43 'schema':66 'semant':12 'set':21 'sort':20 'stabl':25 'structur':49 'thin':70 'unique/secondary':54 'v0.1.0':22","created_at":"2026-06-07T12:55:02.498903+00:00","updated_at":"2026-06-07T12:55:02.498903+00:00","problems":[{"fix":"Ensure Account = Modinha.define('accounts', { ... }) before extending.","cause":"Account is not a Modinha model instance; missing Modinha.define() call.","error":"TypeError: Account.extend is not a function"},{"fix":"Start Redis server or set correct host/port via environment variables.","cause":"Redis server is not running or not accessible.","error":"Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED"},{"fix":"Run: npm install modinha-redis","cause":"Package not installed or missing from node_modules.","error":"Cannot find module 'modinha-redis'"},{"fix":"Use: const { RedisDocument } = require('modinha-redis');","cause":"Incorrect import module; e.g., var { RedisDocument } = require('modinha') instead of modinha-redis.","error":"TypeError: Cannot destructure property 'RedisDocument' of '...' as it is undefined"}],"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/anvilresearch/modinha-redis#readme","github":"https://github.com/anvilresearch/modinha-redis","docs":null,"changelog":null,"pypi":null,"npm":"modinha-redis","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-07","next_check":"2026-09-05","install_tag":null}}