-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathviewmodel.html
2 lines (2 loc) · 34.2 KB
/
viewmodel.html
1
2
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="keywords" content="i18n, internationalization, translation, javascript, nodejs, js"><title>cqrs - viewmodel</title><link href="../public/css/index.css" rel="stylesheet"><script src="../public/js/jquery-1.7.2.min.js"></script><script src="../public/js/bootstrap-2.0.2.min.js"></script><!-- HTML5 shim, for IE6-8 support of HTML5 elements--><!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--><!--[if lt IE 8]><link href="../public/css/font-awesome-ie7-2.0.css" rel="stylesheet" type="text/css"><![endif]--></head><body><header class="header"><div class="header-inner"><div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container"><!--.btn-navbar is used as the toggle for collapsed navbar content--><a data-toggle="collapse" data-target=".nav-collapse" class="btn btn-navbar"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><!-- Be sure to leave the brand out there if you want it shown--><a href="../" class="brand">cqrs</a><!-- Everything you want hidden at 940px or less, place within here--><div class="nav-collapse"><ul class="nav"><li><a href="../index.html">Home</a></li><li><a href="../pages/domain.html">domain</a></li><li><a href="../pages/viewmodel.html">viewmodel</a></li><li><a href="../pages/eventdenormalizer.html">eventdenormalizer</a></li><li><a href="http://adrai.github.io/node-eventstore/">eventstore</a></li><li><a href="http://jamuhl.github.com/backbone.CQRS/">backbone.CQRS</a></li><li><a href="https://github.com/KABA-CCEAC/angular.CQRS/">angular.CQRS</a></li><li><a href="../pages/eventedcommand.html">evented-command</a></li><li><a href="../pages/saga.html">saga</a></li></ul></div></div></div></div></div></header><div class="main"><div class="main-inner"><div class="container"><div class="content-container"> <div class="documentation"><div class="row-fluid"><div class="span8"><div class="hero-unit"><h2>viewmodel</h2><p>viewmodel is a node.js module for multiple databases. It can be very useful if you work with (d)ddd, cqrs, eventdenormalizer, host, etc.</p></div></div><div class="span4 downloads"><p>node.js:</p><pre><code><span class="pln">npm install viewmodel</span></code></pre><p>Build status:<a href="https://travis-ci.org/adrai/node-viewmodel"><img src="https://img.shields.io/travis/adrai/node-viewmodel.svg"></a></p><p>Release:<a href="https://npmjs.org/package/viewmodel"><img src="https://img.shields.io/npm/v/viewmodel.svg"></a></p><div style="margin-top: 25px;" class="alert alert-info feature-description"><a href="https://github.com/adrai/node-viewmodel"><i class="icon-github"></i> fork me on github</a><br><a href="https://github.com/adrai/node-viewmodel/issues"><i class="icon-github"></i> issues</a></div></div></div><div class="row-fluid"><div class="span12"><h2>Connecting</h2><div class="row-fluid"><div class="span4"><h4 class="feature-title">Connecting to an in-memory repository in read mode</h4><p>Simply take the read function</p></div><div class="span8"><div class="feature"><pre><code><span class="kwd">var</span><span class="pln"> viewmodel </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">require</span><span class="pun">(</span><span class="str">'viewmodel'</span><span class="pun">);</span><span class="pln"><br /> <br />viewmodel</span><span class="pun">.</span><span class="pln">read</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> repository</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> </span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Connecting to any repository (mongodb in the example / mode=write)</h4><p>Simply take the write function<br>and call it with options.</p></div><div class="span8"><div class="feature"><pre><code><span class="kwd">var</span><span class="pln"> viewmodel </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">require</span><span class="pun">(</span><span class="str">'viewmodel'</span><span class="pun">);</span><span class="pln"><br /> <br />viewmodel</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="pln"><br /> </span><span class="pun">{</span><span class="pln"><br /> type</span><span class="pun">:</span><span class="pln"> </span><span class="str">'mongodb'</span><span class="pun">,</span><span class="pln"><br /> host</span><span class="pun">:</span><span class="pln"> </span><span class="str">'localhost'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> port</span><span class="pun">:</span><span class="pln"> </span><span class="lit">27017</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> dbName</span><span class="pun">:</span><span class="pln"> </span><span class="str">'viewmodel'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> authSource</span><span class="pun">:</span><span class="pln"> </span><span class="str">'db'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> username</span><span class="pun">:</span><span class="pln"> </span><span class="str">'user'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> password</span><span class="pun">:</span><span class="pln"> </span><span class="str">'pwd'</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> </span><span class="com">// url: 'mongodb://user:pass@host:port/db?opts // optional</span><span class="pln"><br /> </span><span class="pun">},</span><span class="pln"><br /> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> repository</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /></span><span class="pun">);</span></code></pre><div class="alert alert-info feature-description"><h6>Important hint:</h6><p>Be sure you have installed the db driver!</p><p>In this example run:</p><pre><code><span class="pln">npm install mongodb</span></code></pre></div></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Catch connect ad disconnect events</h4><p>Simply listen to connect and disconnect events.</p></div><div class="span8"><div class="feature"><pre><code><span class="kwd">var</span><span class="pln"> repository </span><span class="pun">=</span><span class="pln"> viewmodel</span><span class="pun">.</span><span class="pln">write</span><span class="pun">({</span><span class="pln"> type</span><span class="pun">:</span><span class="pln"> </span><span class="str">'mongodb'</span><span class="pln"> </span><span class="pun">});</span><span class="pln"><br />repository</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'connect'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'hello from event'</span><span class="pun">);</span><span class="pln"><br /> </span><span class="com">// or here</span><span class="pln"><br /></span><span class="pun">});</span><span class="pln"><br />repository</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'disconnect'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'bye'</span><span class="pun">);</span><span class="pln"><br /></span><span class="pun">});</span><span class="pln"><br />repository</span><span class="pun">.</span><span class="pln">connect</span><span class="pun">();</span></code></pre></div></div></div></div></div><div class="row-fluid"><div class="span12"><h2>Work with a viewmodel</h2><div class="row-fluid"><div class="span4"><h4 class="feature-title">Define a collection</h4><p>Simply extend the repository with a collectionName.</p></div><div class="span8"><div class="feature"><pre><code><span class="kwd">var</span><span class="pln"> dummyRepo </span><span class="pun">=</span><span class="pln"> repo</span><span class="pun">.</span><span class="pln">extend</span><span class="pun">({</span><span class="pln"><br /> collectionName</span><span class="pun">:</span><span class="pln"> </span><span class="str">'dummy'</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Create a new viewmodel (only in write mode)</h4><p>Calling get without an id will generate a new not persisted viewmodel with generated id.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> vm</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> <br /> vm</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">'myProp'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'myValue'</span><span class="pun">);</span><span class="pln"><br /> vm</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">'myProp.deep'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'myValueDeep'</span><span class="pun">);</span><span class="pln"><br /> <br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">vm</span><span class="pun">.</span><span class="pln">toJSON</span><span class="pun">());</span><span class="pln"><br /> <br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">vm</span><span class="pun">.</span><span class="pln">has</span><span class="pun">(</span><span class="str">'myProp.deep'</span><span class="pun">));</span><span class="pln"><br /> <br /> dummyRepo</span><span class="pun">.</span><span class="pln">commit</span><span class="pun">(</span><span class="pln">vm</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="pun">});</span><span class="pln"><br /> </span><span class="com">// or you can call commit directly on vm...</span><span class="pln"><br /> vm</span><span class="pun">.</span><span class="pln">commit</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="pun">});</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Find...</h4><p>The query object is like the mongodb query object.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="pln">find</span><span class="pun">({</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> </span><span class="str">'green'</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> vms</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /></span><span class="com">// or</span><span class="pln"><br /></span><span class="com">//dummyRepo.find({ 'deep.prop': 'dark' }, function(err, vms) {</span><span class="pln"><br /></span><span class="com">// or</span><span class="pln"><br /></span><span class="com">//dummyRepo.find({ age: { $gte: 10, $lte: 20 } }, function(err, vms) {</span><span class="pln"><br /></span><span class="com">// or</span><span class="pln"><br /></span><span class="com">//dummyRepo.find({ $or: [{age: 18}, {special: true}] }, function(err, vms) {</span><span class="pln"><br /></span><span class="com">// or</span><span class="pln"><br /></span><span class="com">//dummyRepo.find({ age: { $in: [1, 2, 3, 6] } }, function(err, vms) {</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> <br /> </span><span class="com">// vms is an array</span><span class="pln"><br /> </span><span class="kwd">var</span><span class="pln"> firstItem </span><span class="pun">=</span><span class="pln"> vms</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the id: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> firstItem</span><span class="pun">.</span><span class="pln">id</span><span class="pun">);</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the saved value: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> firstItem</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'color'</span><span class="pun">));</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Find with query options</h4><p>The query options object is like the mongodb query object.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="pln">find</span><span class="pun">({</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> </span><span class="str">'green'</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> limit</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> skip</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> vms</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /></span><span class="com">// or</span><span class="pln"><br /></span><span class="com">//dummyRepo.find({ color: 'green' }, { limit: 2, skip: 1, sort: [['age', 'desc']] }, function(err, vms) {</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> <br /> </span><span class="com">// vms is an array</span><span class="pln"><br /> </span><span class="kwd">var</span><span class="pln"> firstItem </span><span class="pun">=</span><span class="pln"> vms</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the id: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> firstItem</span><span class="pun">.</span><span class="pln">id</span><span class="pun">);</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the saved value: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> firstItem</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'color'</span><span class="pun">));</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">FindOne...</h4><p>The query object is like the mongodb query object.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="pln">findOne</span><span class="pun">({</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> </span><span class="str">'green'</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> vm</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> <br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the id: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> vm</span><span class="pun">.</span><span class="pln">id</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">vm</span><span class="pun">.</span><span class="pln">has</span><span class="pun">(</span><span class="str">'color'</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the saved value: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> vm</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'color'</span><span class="pun">));</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Find/Get by id...</h4><p>Calling get with an id will try to fetch the preferred viewmodel from the repository.</p><p>If an object with such an id does not exists the returning viewmodel is null.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'myId'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> vm</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> <br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the id: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> vm</span><span class="pun">.</span><span class="pln">id</span><span class="pun">);</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the saved value: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> vm</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'color'</span><span class="pun">));</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Delete a viewmodel (only in write mode)</h4><p>Simply call destroy on a viewmodel and commit it.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'myId'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> vm</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> <br /> vm</span><span class="pun">.</span><span class="pln">destroy</span><span class="pun">();</span><span class="pln"><br /> <br /> dummyRepo</span><span class="pun">.</span><span class="pln">commit</span><span class="pun">(</span><span class="pln">vm</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="pun">});</span><span class="pln"><br /> </span><span class="com">// or you can call commit directly on vm...</span><span class="pln"><br /> vm</span><span class="pun">.</span><span class="pln">commit</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="pun">});</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div></div></div><div class="row-fluid"><div class="span12"><h2>Other helping function</h2><div class="row-fluid"><div class="span4"><h4 class="feature-title">Obtain a new id</h4><p>Simply call getNewId.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="pln">getNewId</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln"> newId</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> <br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'the new id is: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> newId</span><span class="pun">);</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Clear a "collection"</h4><p>Simply call clear. (only in write mode)</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">dummyRepo</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'ohhh :-('</span><span class="pun">);</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div></div></div><div class="row-fluid"><div class="span12"><h2>Implementation differences</h2><div class="row-fluid"><div class="span4"><h4 class="feature-title">mongodb</h4><p>For mongodb you can define indexes for performance boosts in find function.</p></div><div class="span8"><div class="feature"><pre><code><span class="kwd">var</span><span class="pln"> dummyRepo </span><span class="pun">=</span><span class="pln"> repository</span><span class="pun">.</span><span class="pln">extend</span><span class="pun">({</span><span class="pln"><br /> collectionName</span><span class="pun">:</span><span class="pln"> </span><span class="str">'dummy'</span><span class="pun">,</span><span class="pln"><br /> indexes</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="pln"><br /> </span><span class="str">'profileId'</span><span class="pun">,</span><span class="pln"><br /> </span><span class="com">// or</span><span class="pln"><br /> </span><span class="pun">{</span><span class="pln"> profileId</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">},</span><span class="pln"><br /> </span><span class="com">// or:</span><span class="pln"><br /> </span><span class="pun">{</span><span class="pln"> index</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">profileId</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">},</span><span class="pln"> options</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{}</span><span class="pln"> </span><span class="pun">}</span><span class="pln"><br /> </span><span class="pun">]</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">redis</h4><p>The find function does ignore the query argument and always fetches all items in the collection.</p></div></div></div></div><div class="row-fluid"><div class="span12"><h2>Database Support</h2><div class="row-fluid"><div class="span4"><h4 class="feature-title">Currently these databases are supported:</h4></div><div class="span8"><div class="feature"><ul><li>inmemory</li><li>mongodb (<a href="https://github.com/mongodb/node-mongodb-native">node-mongodb-native</a>)</li><li>couchdb (<a href="https://github.com/cloudhead/cradle">cradle</a>)</li><li>tingodb (<a href="https://github.com/sergeyksv/tingodb">tingodb</a>)</li><li>redis (<a href="https://github.com/mranney/node_redis">redis</a>)</li><li>azuretable (<a href="https://github.com/Azure/azure-storage-node">azure-storage</a>)</li><li>documentdb (<a href="https://github.com/Azure/azure-documentdb-node">documentdb</a>, <a href="https://github.com/a8m/doqmentdb">doqmentdb</a>)</li><li>elasticsearch (<a href="https://github.com/elastic/elasticsearch-js">elasticsearch</a>)</li></ul></div></div></div></div></div></div></div></div></div></div><div class="extra"><div class="extra-inner"><div class="container"><div class="row"><div class="span4"><h4>about me</h4><ul><li><a href="https://github.com/adrai"><i class="icon-github"></i> github</a></li><li><a href="https://twitter.com/adrirai"><i class="icon-twitter"></i> twitter</a></li></ul></div><div class="span4"><h4>help</h4><ul><li><a href="https://github.com/adrai/cqrs/issues">
issues (<i class="icon-github"></i>)</a></li></ul></div><div class="span4"><h4>legal</h4><ul><li><a href="https://github.com/adrai/node-cqrs-domain/blob/master/licence">license</a></li></ul></div></div></div></div></div><footer class="footer"><div class="footer-inner"><div class="container"><div class="row"><div class="span12">the cqrs modules and libraries are freely distributable under the terms of the MIT license.</div></div></div></div></footer></body></html>