nestore-js-mongodb
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

nestore-js-mongodb

npm version

Event store for Node.js and with MongoDb as storage. An event store is where events are stored when using the Event Sourcing pattern.

This project was born as a porting in Node.js of NEstore, an event store for .NET Framework.

Written and compatible with Typescript.

Installation

npm install nestore-js-mongodb

Usage

Connecting and disconnecting:

const eventStore = new EventStore({url: "mongodb://localhost"});
await eventStore.connect();
const bucket = eventStore.bucket("wcm");
// TODO call function on bucket to read and write on the event store, see below
await	eventStore.close();

Connect to the store only at the start of your application and disconnect at the end.

How to read and write events

import * as nestore from "../index";

const eventStore = new nestore.EventStore({url: "mongodb://localhost:27017/myDb"});

async function writeAndRead() {
  const bucket = eventStore.bucket("sample1");

  const streamId = bucket.randomStreamId(); // shortcut to uuid.v4()
  const options: nestore.WriteOptions = { dispatched: true };

  await bucket.write(streamId, 0, [{name: "A"}], options);
  await bucket.write(streamId, 1, [{name: "B"}], options);

  const commits = await bucket.getCommitsArray({ streamId });

  console.log(commits[0].Events[0].name); // print A
  console.log(commits[1].Events[0].name); // print B
}

async function doWork() {
  await eventStore.connect();
  try {
    await writeAndRead();
  }	finally {
    await	eventStore.close();
  }
}

doWork();

See ./samples for more usage examples.

bucket.write

Write new events

bucket.write(
  streamId: string,
  expectedStreamRevision: number,
  events: any[],
  options: WriteOptions = { dispatched: false }): Promise<WriteResult>

bucket.getCommitById

Get a commit by id.

bucket.getCommitById(id: number): Promise<CommitData | undefined>

bucket.getCommitsArray

bucket.getCommitsArray(filters?: CommitsFilters, options?: CommitsOptions): Promise<CommitData[]>

bucket.lastCommit

bucket.lastCommit(filters?: CommitsFilters, options?: CommitsOptions): Promise<CommitData | undefined>

bucket.updateCommit

bucket.updateCommit(id: number, events: any[]): Promise<CommitData | undefined>

bucket.streamRevision

bucket.streamRevision(streamId: string): Promise<number>

1.x -> 2.x BREAKING CHANGES

From nestore-js-mongodb 2.x the feature that allows to keep open the event stream is DEPRECATED

Readme

Keywords

none

Package Sidebar

Install

npm i nestore-js-mongodb

Weekly Downloads

3

Version

2.0.0

License

ISC

Unpacked Size

49.8 kB

Total Files

24

Last publish

Collaborators

  • dbdj82
  • enrico.massone
  • fabioimpe
  • lucalegora
  • sh0uzama
  • giovanni.frigione
  • thorxas