{"id":41950,"library":"sequelize-transactional-decorator","title":"Sequelize Transactional Decorator","description":"A @Transactional method decorator for Sequelize (v4-6) inspired by Spring's @Transactional annotation. Version 1.0.1 is the latest stable; released 2021. Provides declarative transaction management, various propagation behaviors (REQUIRED, REQUIRES_NEW, etc.), isolation levels, and easy NestJS integration via SequelizeTransactionalModule. Combines multiple service calls under one transaction using CLS (continuation-local-storage).","status":"active","version":"1.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/happnz/sequelize-transactional-decorator","tags":["javascript","sequelize","transactional","transaction","method decorator","annotation","typescript"],"install":[{"cmd":"npm install sequelize-transactional-decorator","lang":"bash","label":"npm"},{"cmd":"yarn add sequelize-transactional-decorator","lang":"bash","label":"yarn"},{"cmd":"pnpm add sequelize-transactional-decorator","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; required to use the decorator","package":"sequelize","optional":false},{"reason":"Used internally for CLS context","package":"cls-hooked","optional":false}],"imports":[{"note":"Default import does not exist; always named import.","wrong":"","symbol":"Transactional","correct":"import { Transactional } from 'sequelize-transactional-decorator'"},{"symbol":"initSequelizeCLS","correct":"import { initSequelizeCLS } from 'sequelize-transactional-decorator'"},{"note":"Use initSequelizeTransactional for non-NestJS setups; pass your Sequelize instance.","wrong":"","symbol":"initSequelizeTransactional","correct":"import { initSequelizeTransactional } from 'sequelize-transactional-decorator'"},{"note":"Only available for NestJS; use .register() in module imports.","wrong":"","symbol":"SequelizeTransactionalModule","correct":"import { SequelizeTransactionalModule } from 'sequelize-transactional-decorator'"}],"quickstart":{"code":"import { initSequelizeCLS, Transactional } from 'sequelize-transactional-decorator';\nimport { Sequelize, Model, DataTypes } from 'sequelize';\n\ninitSequelizeCLS();\n\nconst sequelize = new Sequelize('sqlite::memory:', { logging: false });\n\nconst User = sequelize.define('User', { name: DataTypes.STRING });\n\nclass UserService {\n  @Transactional()\n  async createUser(name: string) {\n    await User.create({ name });\n  }\n}\n\nconst service = new UserService();\nawait service.createUser('Alice');\n\nconsole.log(await User.findAll());\n// Output: [ { id: 1, name: 'Alice', ... } ]","lang":"typescript","description":"Initialize CLS, define a Sequelize model, and use @Transactional decorator on a method to wrap database operations in a transaction."},"warnings":[{"fix":"Call initSequelizeCLS() at the very beginning of your application, before creating any Sequelize instances.","message":"CLS must be initialized before any Sequelize connection is established. Failure to do so will cause transactions to not work properly.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use Node.js >= 8.2 or polyfill async_hooks.","message":"The decorator relies on async_hooks via cls-hooked; it may not work in older Node.js versions (pre-8.2).","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Consider using sequelize's built-in transaction support or test thoroughly with Sequelize v6.","message":"Sequelize v6 is partially supported; some users report issues with transaction nesting.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'-6':11 '1.0.1':19 '2021':25 'annot':17,64 'behavior':32 'call':48 'cls':53 'combin':45 'continu':55 'continuation-local-storag':54 'declar':27 'decor':3,7,63 'easi':40 'etc':36 'inspir':12 'integr':42 'isol':37 'javascript':58 'latest':22 'level':38 'local':56 'manag':29 'method':6,62 'multipl':46 'nestj':41 'new':35 'one':50 'propag':31 'provid':26 'releas':24 'requir':33,34 'sequel':1,9,59 'sequelizetransactionalmodul':44 'servic':47 'spring':14 'stabl':23 'storag':57 'transact':2,5,16,28,51,60,61 'typescript':65 'use':52 'v4':10 'various':30 'version':18 'via':43","created_at":"2026-06-04T18:54:53.652659+00:00","updated_at":"2026-06-04T18:54:53.652659+00:00","problems":[{"fix":"Install a compatible version: npm install cls-hooked@2.0.1","cause":"Missing or incompatible cls-hooked module","error":"TypeError: cls_hooked is not a constructor"},{"fix":"Ensure initSequelizeCLS() is called at the top of your entry file, before any Sequelize operations.","cause":"initSequelizeCLS() was not called or called after connection","error":"Error: CLS context not available. Make sure to call initSequelizeCLS() before creating any Sequelize instances."},{"fix":"Mock the @Transactional decorator in tests or ensure CLS is initialized.","cause":"Transaction decorator used without proper CLS context (e.g., in a test environment)","error":"SequelizeDatabaseError: SQLITE_ERROR: no such transaction"}],"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/happnz/sequelize-transactional-decorator#readme","github":"https://github.com/happnz/sequelize-transactional-decorator","docs":null,"changelog":null,"pypi":null,"npm":"sequelize-transactional-decorator","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}}