{"id":21158168,"url":"https://github.com/node-casbin/mongo-changestream-watcher","last_synced_at":"2025-07-09T12:33:47.548Z","repository":{"id":57915807,"uuid":"527590639","full_name":"node-casbin/mongo-changestream-watcher","owner":"node-casbin","description":"Casbin Watcher based on MongoDB Change Streams","archived":false,"fork":false,"pushed_at":"2023-08-07T01:48:23.000Z","size":101,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-25T03:04:28.913Z","etag":null,"topics":["casbin","casbin-watcher","mongodb","nodejs"],"latest_commit_sha":null,"homepage":"https://casbin.org/docs/watchers","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/node-casbin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-22T14:03:13.000Z","updated_at":"2023-07-07T05:35:23.000Z","dependencies_parsed_at":"2023-02-08T09:15:46.594Z","dependency_job_id":null,"html_url":"https://github.com/node-casbin/mongo-changestream-watcher","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-casbin%2Fmongo-changestream-watcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-casbin%2Fmongo-changestream-watcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-casbin%2Fmongo-changestream-watcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-casbin%2Fmongo-changestream-watcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/node-casbin","download_url":"https://codeload.github.com/node-casbin/mongo-changestream-watcher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225550931,"owners_count":17487212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["casbin","casbin-watcher","mongodb","nodejs"],"created_at":"2024-11-20T12:16:53.379Z","updated_at":"2024-11-20T12:16:54.119Z","avatar_url":"https://github.com/node-casbin.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Node-Casbin Watcher based on MongoDB Change Streams\n\n[![NPM version][npm-image]][npm-url]\n[![NPM download][download-image]][download-url]\n[![codebeat badge](https://codebeat.co/badges/6a941388-2e36-408b-952e-2bd227e3997c)](https://codebeat.co/projects/github-com-node-casbin-mongo-changestream-watcher-master)\n[![Coverage Status](https://coveralls.io/repos/github/node-casbin/mongo-changestream-watcher/badge.svg?branch=master)](https://coveralls.io/github/node-casbin/mongo-changestream-watcher?branch=master)\n[![Discord](https://img.shields.io/discord/1022748306096537660?logo=discord\u0026label=discord\u0026color=5865F2)](https://discord.gg/S5UjpzGZjN)\n[![tests](https://github.com/node-casbin/mongo-changestream-watcher/actions/workflows/main.yml/badge.svg)](https://github.com/node-casbin/mongo-changestream-watcher/actions/workflows/main.yml)\n\n[npm-image]: https://img.shields.io/npm/v/@casbin/mongo-changestream-watcher.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/@casbin/mongo-changestream-watcher\n[download-image]: https://img.shields.io/npm/dm/@casbin/mongo-changestream-watcher.svg?style=flat-square\n[download-url]: https://npmjs.org/package/@casbin/mongo-changestream-watcher\n\nFor more information about MongoDB Change Streams, look [here](https://www.mongodb.com/docs/manual/changeStreams/).\n\nMore information about Casbin Watchers, look [here](https://casbin.org/docs/watchers).\n\n## Installation\n\n```shell script\n# NPM\nnpm install --save @casbin/mongo-changestream-watcher\n\n# Yarn\nyarn add @casbin/mongo-changestream-watcher\n```\n\n## Simple Example using Mongoose Adapter\n\n```typescript\nimport { MongoChangeStreamWatcher } from '@casbin/mongo-changestream-watcher';\nimport { newEnforcer } from 'casbin';\n\n// Initialize the watcher by connecting to a replica set.\nconst watcher = await MongoChangeStreamWatcher.newWatcher('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', {collectionName: 'casbin_rule'});\nconst adapter = await MongooseAdapter.newAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0');\nconst enforcer = await newEnforcer('test/fixtures/basic_model.conf', adapter);\n\n// Initialize the enforcer.\nconst enforcer = await newEnforcer('examples/authz_model.conf', 'examples/authz_policy.csv');\n\nenforcer.setWatcher(watcher);\n\n// By default, the watcher's callback is automatically set to the\n// enforcer's loadPolicy() in the setWatcher() call.\n// We can change it by explicitly setting a callback.\nwatcher.setUpdateCallback(() =\u003e console.log('Casbin need update'));\n```\n\n## Notes\n\nThis watcher does not operate with `update`-calls typically found in other watchers. Mongo Change Stream directly reacts to changes in the database collection, and therefore all other watchers listening to the same stream will be automatically notified when changes do occur. However, this means that watcher also gets notified by its own changes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnode-casbin%2Fmongo-changestream-watcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnode-casbin%2Fmongo-changestream-watcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnode-casbin%2Fmongo-changestream-watcher/lists"}