kyoto-client
Version:
Client for Kyoto Tycoon
875 lines (697 loc) • 102 kB
HTML
<!DOCTYPE HTML>
<html lang="en" class"no-js">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=640" />
<title>kyoto-client - Kyoto Tycoon client for node.js</title>
<link rel="stylesheet" type="text/css" href="/screen.css" media="screen" />
<link rel="stylesheet" type="text/css" href="/highlight.css" media="screen" />
<meta name="generator" content="nanoc 3.1.6" />
<meta name="author" content="Wesley Moore" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-199609-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script src="/modernizr-1.6.min.js" type="text/javascript" charset="utf-8"></script>
<script src="/raphael-min.js" type="text/javascript" charset="utf-8"></script>
<script src="/app.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<header>
<h1><a href="/">kyoto-client</a> <sup>v0.4.0</sup></h1>
<nav>
<li><a href="#intro">Introduction</a></li>
<li><a href="#install">Installation</a></li>
<li><a href="#developement">Development</a></li>
<li><a href="#licence">Licence</a></li>
<li><a href="https://github.com/wezm/kyoto-client" class="git">Source <sup>git</sup></a></li>
<li><a href="https://github.com/wezm/kyoto-client/issues">Bug Tracker</a></li>
</nav>
<h2><a href="#api">API</a></h2>
<h3><a href="#db">DB</a></h3>
<nav>
<li><a href="#new">constructor</a></li>
<li><a href="#open">open</a></li>
<li><a href="#close">close</a></li>
<li><a href="#defaultDatabase">defaultDatabase</a></li>
<li><a href="#close">close</a></li>
<li><a href="#echo">echo</a></li>
<li><a href="#report">report</a></li>
<li><a href="#play_script" class="not-implemented">playScript</a></li>
<li><a href="#tune_replication" class="not-implemented">tuneReplication</a></li>
<li><a href="#status">status</a></li>
<li><a href="#clear">clear</a></li>
<li><a href="#synchronize" class="not-implemented">synchronize</a></li>
<li><a href="#set">set</a></li>
<li><a href="#add">add</a></li>
<li><a href="#replace">replace</a></li>
<li><a href="#append">append</a></li>
<li><a href="#increment">increment</a></li>
<li><a href="#increment_double">incrementDouble</a></li>
<li><a href="#cas">cas</a></li>
<li><a href="#remove">remove</a></li>
<li><a href="#get">get</a></li>
<li><a href="#exists">exists</a></li>
<li><a href="#set_bulk">setBulk</a></li>
<li><a href="#remove_bulk">removeBulk</a></li>
<li><a href="#get_bulk">getBulk</a></li>
<li><a href="#vacuum" class="not-implemented">vacuum</a></li>
<li><a href="#match_prefix">matchPrefix</a></li>
<li><a href="#match_regex">matchRegex</a></li>
<li><a href="#get_cursor">getCursor</a></li>
</nav>
<h3><a href="#cursor" class="class">Cursor</a></h3>
<nav>
<li><a href="#cur_jump">jump</a></li>
<li><a href="#cur_jump_back">jumpBack</a></li>
<li><a href="#cur_step">step</a></li>
<li><a href="#cur_step_back">stepBack</a></li>
<li><a href="#cur_set_value">setValue</a></li>
<li><a href="#cur_remove">remove</a></li>
<li><a href="#cur_get_key">getKey</a></li>
<li><a href="#cur_get_value">getValue</a></li>
<li><a href="#cur_get">get</a></li>
<li><a href="#cur_delete">delete</a></li>
<li><a href="#cur_each">each</a></li>
</nav>
<h2><a href="#related">Related Projects</a></h2>
<nav>
<li><a href="#connect-kyoto">connect-kyoto</a></li>
</nav>
<h2><a href="#changelog">Changelog</a></h2>
<nav>
<li><a href="#0.2.0">0.2.0</a></li>
<li><a href="#0.1.1">0.1.1</a></li>
<li><a href="#0.1.0">0.1.0</a></li>
</nav>
</header>
<section id="main">
<h1>
<span id="logo"></span> kyoto-client – Kyoto Tycoon client for node.js</h1>
<p><a name="intro"></a></p>
<h2>Introduction</h2>
<p>kyoto-client is a <a href="http://nodejs.org/">node.js</a> module that acts as a client to a <a href="http://fallabs.com/kyototycoon/">Kyoto
Tycoon</a> server. Kyoto Tycoon is the server component of <a href="http://fallabs.com/kyotocabinet/">Kyoto
Cabinet</a>, a fast, efficient key-value store developed by <a href="http://fallabs.com/">FAL
labs</a>. Records can be stored on disk or in memory using a hash table
or B+ tree.</p>
<p><a name="install"></a></p>
<h2>Installation</h2>
<p>Installation via <a href="http://npmjs.org/">npm</a> is recommended:</p>
<pre><code>npm install kyoto-client
</code></pre>
<p><a name="development"></a></p>
<h2>Development</h2>
<p>kyoto-client is implemented in <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a> and uses <a href="https://github.com/caolan/nodeunit">nodeunit</a> for
testing. Both are available via npm as <code>coffee-script</code> and <code>nodeunit</code>
respectfully. It is developed against the current stable node.js version.</p>
<p>The primary documentation for the project is its website, the source of which
is also included here. The website is built with <a href="http://nanoc.stoneship.org/">nanoc</a>. To get setup for
making documentation changes you’ll need to install nanoc and some other
RubyGems:</p>
<ul>
<li>From the <a href="https://github.com/wezm/kyoto-client/tree/master/doc">doc</a> directory run <code>bundle install</code> (assumes you have previously
installed <a href="http://gembundler.com/">bundler</a>).</li>
<li>Start the nanoc autocompiler with <code>bundle exec nanoc aco</code> and navigate to
<a href="http://localhost:3000/">http://localhost:3000/</a>.</li>
</ul><p>Contributions are welcome and should maintain the existing coding style and be
accompanied by tests and documentation. Bugs and desired features are tracked
in the <a href="https://github.com/wezm/kyoto-client/issues">issue tracker</a>. The tests can be run via <code>cake test</code>.</p>
<p><a name="licence"></a></p>
<h2>Licence</h2>
<p>kyoto-client is licenced under the BSD licence. Refer to the <a href="https://github.com/wezm/kyoto-client/blob/master/LICENSE">LICENCE</a> in the
repository for the full details.</p>
<p><a name="api"></a></p>
<h2>API</h2>
<p><a name="db"></a></p>
<h3>DB</h3>
<p>The DB class is the primary interface to a Kyoto Tycoon database.</p>
<p><a name="new"></a></p>
<h4>◆ constructor <code>new(defaultDatabase)</code>
</h4>
<p>Constructs and returns a new DB object.</p>
<ul>
<li>
<code>defaultDatabase</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – The default Kyoto Tycoon database
to operate upon when not expicitly specified in a procedure. See also
<a href="#defaultDatabase">defaultDatabase</a>.</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="kd">var</span> <span class="nx">kt</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'kyoto-client'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">db</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">kt</span><span class="p">.</span><span class="nx">Db</span><span class="p">();</span>
<span class="c1">// With default database</span>
<span class="kd">var</span> <span class="nx">db</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">kt</span><span class="p">.</span><span class="nx">Db</span><span class="p">(</span><span class="s1">'default.kct'</span><span class="p">);</span>
</code></pre>
<p><a name="open"></a></p>
<h4>◆ open <code>open(hostname='localhost', port=1978)</code>
</h4>
<p>Open a connection to the database. Returns the Db object.</p>
<ul>
<li>
<code>hostname</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The hostname of the database.</li>
<li>
<code>port</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – The port to connect to on the host.</li>
</ul><h5>Examples</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">open</span><span class="p">();</span>
<span class="c1">// on a different host</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="s1">'kyoto.example.com'</span><span class="p">);</span>
</code></pre>
<pre class="highlight"><code class="language-js"><span class="kd">var</span> <span class="nx">kyoto</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'kyoto-client'</span><span class="p">);</span>
<span class="c1">// Chained with new</span>
<span class="kd">var</span> <span class="nx">db</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">kyoto</span><span class="p">.</span><span class="nx">Db</span><span class="p">().</span><span class="nx">open</span><span class="p">(</span><span class="s1">'example.com'</span><span class="p">,</span> <span class="mi">1978</span><span class="p">);</span>
</code></pre>
<p><a name="close"></a></p>
<h4>◆ close <code>close(callback)</code>
</h4>
<p>Close the connection to the database.</p>
<p>Internally kyoto-client uses a persistent connection to the database to make
requests faster. However to prevent your node application from hanging you
must call <code>db.close</code> when you are done so that this persistent connection is
closed.</p>
<ul>
<li>
<code>callback(error)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">close</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Connection is now closed. The db can't be used anymore.</span>
<span class="p">});</span>
</code></pre>
<p><a name="defaultDatabase"></a></p>
<h4>◆ defaultDatabase <code>defaultDatabase([database])</code>
</h4>
<p>Set or get the default database.</p>
<p>A Tokyo Tycoon server can host multiple databases. Requests can be directed
at a particular database by name or number. E.g. <code>'users.kct'</code> or <code>1</code>.</p>
<p>For procedures that accept a database option the value of defaultDatabase
will be used if the option isn’t specified.</p>
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – database to make default.
If not specified the current value for the default database is returned.</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="c1">// Set the default database</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">defaultDatabase</span><span class="p">(</span><span class="s1">'example.kct'</span><span class="p">);</span>
<span class="c1">// Retrieve the current default database value</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">defaultDatabase</span><span class="p">();</span>
</code></pre>
<p><a name="echo"></a></p>
<h4>◆ echo <code>echo(input, callback)</code>
</h4>
<p>Echo back the input data as the output data</p>
<ul>
<li>
<code>input</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Arbitrary key-value pairs</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">echo</span><span class="p">({</span><span class="nx">test</span><span class="o">:</span> <span class="s2">"Value"</span><span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// output -> {test: "Value"}</span>
<span class="p">});</span>
</code></pre>
<p><a name="report"></a></p>
<h4>◆ report <code>report(callback)</code>
</h4>
<p>Get a report on the server.</p>
<ul>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">report</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="cm">/* output -></span>
<span class="cm"> { conf_kc_features: '(atomic)(zlib)'</span>
<span class="cm"> , conf_kc_version: '1.2.30 (7.1)'</span>
<span class="cm"> , conf_kt_features: '(kqueue)(lua)'</span>
<span class="cm"> , conf_kt_version: '0.9.19 (1.25)'</span>
<span class="cm"> , conf_os_name: 'Mac OS X'</span>
<span class="cm"> , db_0: 'count=2 size=400128 path=tests.kct'</span>
<span class="cm"> , db_total_count: '2'</span>
<span class="cm"> , db_total_size: '400128'</span>
<span class="cm"> , serv_conn: '1'</span>
<span class="cm"> , serv_task: '0'</span>
<span class="cm"> , sys_mem_peak: '2777088'</span>
<span class="cm"> , sys_mem_rss: '2777088'</span>
<span class="cm"> , sys_mem_size: '2777088'</span>
<span class="cm"> , sys_proc_id: '70687'</span>
<span class="cm"> , sys_ru_stime: '73.651796'</span>
<span class="cm"> , sys_ru_utime: '90.519024'</span>
<span class="cm"> , sys_time: '351491.752587'</span>
<span class="cm"> }</span>
<span class="cm">*/</span>
<span class="p">});</span>
</code></pre>
<p><a name="play_script"></a></p>
<h4>◆ playScript</h4>
<p>Call a procedure of the script language (<a href="http://www.lua.org/">Lua</a>) extension.</p>
<p>Not yet implemented.</p>
<p><a name="tune_replication"></a></p>
<h4>◆ tuneReplication</h4>
<p>Configure the replication configuration.</p>
<p>Not yet implemented.</p>
<p><a name="status"></a></p>
<h4>◆ status <code>status([options], callback)</code>
</h4>
<p>Get miscellaneous status information about a database.</p>
<ul>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index.
For example: <code>test.kct</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">status</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="cm">/* output -></span>
<span class="cm"> { apow: '8'</span>
<span class="cm"> , bnum: '65536'</span>
<span class="cm"> , chksum: '188'</span>
<span class="cm"> , count: '2'</span>
<span class="cm"> , cusage: '66'</span>
<span class="cm"> , dfunit: '0'</span>
<span class="cm"> , first: '1'</span>
<span class="cm"> , flags: '1'</span>
<span class="cm"> , fmtver: '5'</span>
<span class="cm"> , fpow: '10'</span>
<span class="cm"> , frgcnt: '0'</span>
<span class="cm"> , icnt: '0'</span>
<span class="cm"> , ktcapcnt: '-1'</span>
<span class="cm"> , ktcapsiz: '-1'</span>
<span class="cm"> , ktopts: '0'</span>
<span class="cm"> , last: '1'</span>
<span class="cm"> , lcnt: '1'</span>
<span class="cm"> , librev: '1'</span>
<span class="cm"> , libver: '7'</span>
<span class="cm"> , msiz: '67108864'</span>
<span class="cm"> , opts: '0'</span>
<span class="cm"> , path: 'tests.kct'</span>
<span class="cm"> , pccap: '67108864'</span>
<span class="cm"> , pnum: '2'</span>
<span class="cm"> , psiz: '8192'</span>
<span class="cm"> , rcomp: 'lexical'</span>
<span class="cm"> , realsize: '400128'</span>
<span class="cm"> , realtype: '49'</span>
<span class="cm"> , recovered: '0'</span>
<span class="cm"> , reorganized: '0'</span>
<span class="cm"> , root: '1'</span>
<span class="cm"> , size: '400128'</span>
<span class="cm"> , trimmed: '0'</span>
<span class="cm"> , type: '49'</span>
<span class="cm"> }</span>
<span class="cm">*/</span>
<span class="p">});</span>
<span class="c1">// For a specific database</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">status</span><span class="p">({</span><span class="nx">database</span><span class="o">:</span> <span class="s2">"users.kct"</span><span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// output contains status info for the users database</span>
<span class="p">});</span>
</code></pre>
<p><a name="clear"></a></p>
<h4>◆ clear <code>clear([options], callback)</code>
</h4>
<p>Remove all records from the database.</p>
<ul>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">clear</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// output -> {}</span>
<span class="p">});</span>
<span class="c1">// Clear a specific database</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">clear</span><span class="p">({</span><span class="nx">database</span><span class="o">:</span> <span class="s2">"test.kct"</span><span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// output -> {}</span>
<span class="p">});</span>
</code></pre>
<p><a name="synchronize"></a></p>
<h4>◆ synchronize</h4>
<p>Synchronize updated contents with the file and the device</p>
<p>Not yet implemented.</p>
<p><a name="set"></a></p>
<h4>◆ set <code>set(key, value, [options], callback)</code>
</h4>
<p>Set value of a record.</p>
<ul>
<li>
<code>key</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The key of the record</li>
<li>
<code>value</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="http://nodejs.org/docs/v0.2.6/api.html#buffers-2">Buffer</a> – The value of the record</li>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
<li>
<code>expiry</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date">Date</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – Set the expiry time of the record.
When a date, this value will be when the record expires. When a number
the record will expire in the the value specified seconds from now.</li>
</ul>
</li>
<li>
<code>callback(error)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
<span class="p">});</span>
<span class="c1">// Set a record in a specific database</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="p">{</span><span class="nx">database</span><span class="o">:</span> <span class="s2">"test.kct"</span><span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="p">});</span>
<span class="c1">// Set the record to expire in one minute</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="p">{</span><span class="nx">expiry</span><span class="o">:</span> <span class="mi">60</span><span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
<span class="p">});</span>
<span class="c1">// Set the record to expire on 1 Jan 2020</span>
<span class="kd">var</span> <span class="nx">expires</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="s2">"1 Jan 2020"</span><span class="p">);</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="p">{</span><span class="nx">expiry</span><span class="o">:</span> <span class="nx">expires</span><span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
<span class="p">});</span>
</code></pre>
<p><a name="add"></a></p>
<h4>◆ add <code>add(key, value, [options], callback)</code>
</h4>
<p>Set value of a record. Returns an error if the record already exists.</p>
<ul>
<li>
<code>key</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The key of the record</li>
<li>
<code>value</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="http://nodejs.org/docs/v0.2.6/api.html#buffers-2">Buffer</a> – The value of the record</li>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="p">});</span>
<span class="c1">// when value already exists</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> Error("Record exists")</span>
<span class="c1">// output -> { ERROR: 'DB: 6: record duplication: record duplication' }</span>
<span class="p">});</span>
<span class="p">});</span>
</code></pre>
<p><a name="replace"></a></p>
<h4>◆ replace <code>replace(key, value, [options], callback)</code>
</h4>
<p>Replace the value of a record. Returns an error if the record does not exist.</p>
<ul>
<li>
<code>key</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The key of the record</li>
<li>
<code>value</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="http://nodejs.org/docs/v0.2.6/api.html#buffers-2">Buffer</a> – The value of the record</li>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Test"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="c1">// output -> {}</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="c1">// when the record doesn't exist</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> Error("Record does not exist")</span>
<span class="c1">// output -> { ERROR: 'DB: 7: no record: no record' }</span>
<span class="p">});</span>
</code></pre>
<p><a name="append"></a></p>
<h4>◆ append <code>append(key, value, [options], callback)</code>
</h4>
<p>Append to the value of a record. Sets the record if it does not exist.</p>
<ul>
<li>
<code>key</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The key of the record</li>
<li>
<code>value</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="http://nodejs.org/docs/v0.2.6/api.html#buffers-2">Buffer</a> – The value to append to the record</li>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Test"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">" Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="c1">// output -> {}</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// value -> 'Test Value'</span>
<span class="p">})</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="c1">// when the record doesn't exist</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> Error("Record does not exist")</span>
<span class="c1">// output -> {}</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// value -> 'Value'</span>
<span class="p">})</span>
<span class="p">});</span>
</code></pre>
<p><a name="increment"></a></p>
<h4>◆ increment <code>increment(key, num, [options], callback)</code>
</h4>
<p>Increment the integer value of a compatible record. Sets the record if it does
not exist.</p>
<p><strong>Note:</strong> It appears that Kyoto Tycoon only allows records that were created
with <code>increment</code> to be incremented. Attempts to use this procedure on records
set by other means results in an error (Kyoto Tycoon 0.9.29 (2.1) on Mac OS X
(Kyoto Cabinet 1.2.39)).</p>
<ul>
<li>
<code>key</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The key of the record</li>
<li>
<code>num</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – The amount to increment the record by. Should be a positive or negative integer.</li>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Result from the server
<ul>
<li>
<code>num</code> – the new value of the record</li>
</ul>
</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">increment</span><span class="p">(</span><span class="s1">'count'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="c1">// output -> { num: '1' }</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">increment</span><span class="p">(</span><span class="s1">'count'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="c1">// output -> { num: '2' }</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="c1">// incrementing an incompatible record</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'incompatible'</span><span class="p">,</span> <span class="s2">"1"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">increment</span><span class="p">(</span><span class="s1">'incompatible'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> Error("The existing record was not compatible")</span>
<span class="c1">// output -> { ERROR: 'DB: 8: logical inconsistency: logical inconsistency' }</span>
<span class="p">});</span>
<span class="p">});</span>
</code></pre>
<p><a name="increment_double"></a></p>
<h4>◆ incrementDouble <code>incrementDouble(key, num, [options], callback)</code>
</h4>
<p>Increment the double (floating point) value of a compatible record.
Sets the record if it does not exist.</p>
<p>See note about compatible values in <a href="#increment">increment</a>.</p>
<ul>
<li>
<code>key</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The key of the record</li>
<li>
<code>num</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – The amount to increment the record by. Can be positive or negative.</li>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Result from the server
<ul>
<li>
<code>num</code> – the new value of the record</li>
</ul>
</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="nx">db</span><span class="p">.</span><span class="nx">incrementDouble</span><span class="p">(</span><span class="s1">'count'</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="c1">// output -> { num: '1.500000' }</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">incrementDouble</span><span class="p">(</span><span class="s1">'count'</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.25</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> undefined</span>
<span class="c1">// output -> { num: '1.250000' }</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="c1">// incrementing an incompatible record</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'incompatible'</span><span class="p">,</span> <span class="s2">"1"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">incrementDouble</span><span class="p">(</span><span class="s1">'incompatible'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// error -> Error("The existing record was not compatible")</span>
<span class="c1">// output -> { ERROR: 'DB: 8: logical inconsistency: logical inconsistency' }</span>
<span class="p">});</span>
<span class="p">});</span>
</code></pre>
<p><a name="cas"></a></p>
<h4>◆ cas <code>cas(key, oval, nval, [options], callback)</code>
</h4>
<p>Performs a compare-and-swap operation. The value is only updated if the
assumed existing value matches.</p>
<ul>
<li>
<code>key</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> – The key of the record</li>
<li>
<code>oval</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="http://nodejs.org/docs/v0.2.6/api.html#buffers-2">Buffer</a> – The assumed old value. Set to <code>null</code> if the
record does not currently have a value.</li>
<li>
<code>nval</code> – <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="http://nodejs.org/docs/v0.2.6/api.html#buffers-2">Buffer</a> – The new value. Set to <code>null</code> to remove the
record.</li>
<li>
<code>options</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Options hash
<ul>
<li>
<code>database</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String">String</a> or <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">Number</a> – A database name or index. For example: <code>'test.kct'</code> or <code>1</code>.</li>
</ul>
</li>
<li>
<code>callback(error, output)</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function">Function</a> – Callback function
<ul>
<li>
<code>error</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error">Error</a> – Set if an error occurs, otherwise <code>undefined</code>
</li>
<li>
<code>output</code> <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object">Object</a> – Key-value pairs</li>
</ul>
</li>
</ul><h5>Example</h5>
<pre class="highlight"><code class="language-js"><span class="c1">// sets the new value when the old value matches</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s1">'old'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">cas</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s1">'old'</span><span class="p">,</span> <span class="s1">'new'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// value -> 'new'</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="c1">// doesn't set the new value when the old value differs</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s1">'old'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">cas</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="s1">'not old'</span><span class="p">,</span> <span class="s1">'new'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">output</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">'test'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// value -> 'old'</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="c1">// removes the record when the new value is null</span>
<span class="nx">db</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'test'</span><span clas