2016-03-09 19:52:01 +00:00
# eventstore-node
2016-03-09 20:46:15 +00:00
A port of the EventStore .Net ClientAPI to Node.js
2016-03-10 01:08:03 +00:00
## Dependencies
2016-03-09 20:46:15 +00:00
2016-03-10 01:08:03 +00:00
- Node.js >= 0.12
2016-03-17 06:15:25 +00:00
- Modules: [long ](https://www.npmjs.org/package/long ), [protobufjs ](https://www.npmjs.org/package/protobufjs ), [uuid ](https://www.npmjs.org/package/uuid ) (installed via `npm install` )
2016-03-09 20:46:15 +00:00
2016-03-09 23:37:08 +00:00
## Status
Unstable
2016-03-09 20:46:15 +00:00
2016-03-14 22:37:35 +00:00
### Missing features:
- Ssl connection
- Cluster connection
- Set system settings
### Incomplete
2016-03-09 20:46:15 +00:00
- Typed errors: currently most errors are direct instance of Error, which is not practical for error handling
- Performance: there's still some while loop in the code that could be problematic with node.js
- Tests: tests are only covering happy path scenarios for now
2016-03-17 06:15:25 +00:00
## Getting started
2016-10-29 21:30:39 +00:00
### Install & run Eventstore on localhost
See http://docs.geteventstore.com/introduction/3.9.0/ .
### Example: Storing an event
2016-10-29 21:34:29 +00:00
Save to ```app.js:```
2016-10-29 21:30:39 +00:00
```javascript
var esClient = require('eventstore-node');
var uuid = require('uuid');
var streamName = "testStream";
var esConnection = esClient.createConnection({}, {"hostname": "localhost", "port": 1113});
esConnection.connect();
esConnection.once('connected', function (tcpEndPoint) {
console.log('Connected to eventstore at ' + tcpEndPoint.hostname + ":" + tcpEndPoint.port);
});
var eventId = uuid.v4();
var eventData = {
a : Math.random(),
b: uuid.v4()
};
var event = esClient.createJsonEventData(eventId, eventData, null, 'testEvent');
console.log("Appending...");
esConnection.appendToStream(streamName, esClient.expectedVersion.any, event)
.then(function(result) {
console.log("Stored event:", eventId);
console.log("Look for it at: http://localhost:2113/web/index.html#/streams/testStream");
esConnection.close();
})
.catch(function(err) {
console.log(err);
});
```
2016-10-29 21:34:29 +00:00
Create ```package.json```:
2016-10-29 21:30:39 +00:00
```json
{
"name": "hello",
"version": "1.0.0",
"main": "app.js",
"dependencies": {
"eventstore-node": "latest",
"uuid": "latest"
}
}
```
2016-10-29 21:34:29 +00:00
```npm install```
2016-10-29 21:30:39 +00:00
2016-10-29 21:34:29 +00:00
```node app.js```
2016-03-09 20:46:15 +00:00
2016-03-10 01:08:03 +00:00
## Porting .Net Task to Node.js
2016-10-15 22:41:25 +00:00
.Net Task have been replace with Promise. When executing an async command, i.e. appendToStream you can use then/catch to wait for result/error.
2016-03-09 23:37:08 +00:00
## Running the tests
2016-03-09 20:46:15 +00:00
2016-03-17 06:15:25 +00:00
To run the tests you will need
- To install the dependencies (`npm install`)
- Run an instance of EventStore >= 3.3.0 (competing consumers are required for test) on localhost:1113 (Download [here ](https://geteventstore.com/downloads/ ))
2016-03-09 20:46:15 +00:00
To execute the tests suites simply run test with npm
2016-03-10 01:08:03 +00:00
npm test
2016-03-09 23:37:08 +00:00
## License
2016-03-17 06:15:25 +00:00
Ported code is released under the MIT license, see [LICENSE ](https://github.com/nicdex/eventstore-node/blob/master/LICENSE ).
Original code is released under the EventStore license and can be found at https://github.com/eventstore/eventstore.