{"_id":"node-handlersocket","_rev":"21-e09890481a0211a2a78afcee12e59486","name":"node-handlersocket","description":"HandlerSocket client for Node.js","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.0":{"name":"node-handlersocket","version":"0.0.0","description":"HandlerSocket client for Node.js","homepage":"http://github.com/koichik/node-handlersocket/","author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp","url":"http://d.hatena.ne.jp/koichik/"},"main":"node-handlersocket","directories":{"lib":"lib","example":"example"},"licenses":[{"type":"MIT"}],"repositories":{"type":"git","url":"http://github.com/koichik/node-handlersocket.git","private":"git@github.com:koichik/node-handlersocket.git","web":"http://github.com/koichik/node-handlersocket"},"engines":{"node":">=0.3.0"},"_id":"node-handlersocket@0.0.0","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"https://registry.npmjs.org/node-handlersocket/-/node-handlersocket-0.0.0.tgz","shasum":"aa58e1dc9caa88947ae8a8d98a8e6c682a59dcac","integrity":"sha512-9HqyGKMvvMugT/5knHf76ill/guNQOqSBbGlOQwNUhBiA7iLwQVWQUoXErYc1lyj2VUTEx2t4dS3y8pmWajfYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuoyItOyOdt2Ckq9qEptdWcPy/EoPjSGzvC7kHq0KW4wIgHJxq0Bh449lt4FkFHbm2UzulyWfdCQchtjkB7WEOZW0="}]}},"0.0.1":{"name":"node-handlersocket","version":"0.0.1","description":"HandlerSocket client for Node.js","homepage":"http://github.com/koichik/node-handlersocket/","author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp","url":"http://d.hatena.ne.jp/koichik/"},"main":"node-handlersocket","directories":{"lib":"lib","example":"example"},"licenses":[{"type":"The MIT License","url":"http://www.opensource.org/licenses/mit-license.php"}],"repositories":{"type":"git","url":"http://github.com/koichik/node-handlersocket.git","private":"git@github.com:koichik/node-handlersocket.git","web":"http://github.com/koichik/node-handlersocket"},"engines":{"node":">=0.3.0"},"_id":"node-handlersocket@0.0.1","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"https://registry.npmjs.org/node-handlersocket/-/node-handlersocket-0.0.1.tgz","shasum":"e6f7b08dbb1c24e8e3eff21b0fe715e7d936b512","integrity":"sha512-+RsZa9zDLRI0ZvO+jgxcvSCoc1NDXsHUyERtHvh5AP/DaTRpLELkieEYxK/SmxeQkcKzcNvF07y+rjNmPdfddA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRfoBHyPYT3A+TvjCaxJVWV2WOrnv5ktSyb02Ht0OeEAIhAJhBdVSAlUkJpsEqYuUTE7lyZVTPuD910/WwfxvgQflT"}]}},"0.0.2":{"name":"node-handlersocket","version":"0.0.2","description":"HandlerSocket client for Node.js","homepage":"http://github.com/koichik/node-handlersocket/","author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp","url":"http://d.hatena.ne.jp/koichik/"},"main":"node-handlersocket","directories":{"lib":"lib","example":"example"},"licenses":[{"type":"The MIT License","url":"http://www.opensource.org/licenses/mit-license.php"}],"repositories":{"type":"git","url":"http://github.com/koichik/node-handlersocket.git","private":"git@github.com:koichik/node-handlersocket.git","web":"http://github.com/koichik/node-handlersocket"},"engines":{"node":">=0.3.0"},"_id":"node-handlersocket@0.0.2","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"https://registry.npmjs.org/node-handlersocket/-/node-handlersocket-0.0.2.tgz","shasum":"7b8e927fcf59b7c33b00e16ab20fa0c3028501e6","integrity":"sha512-0CdcmwLwdHR2u5ZmG4XtaozB0TW8YOuEkONIiWwSsXKQL83RGV1qmPaW18GQsuHq5A72+qf0txqxPg8bxCe0IQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+RR+YVfmlPv/pMR2ZXNUhY343sN2cbvbPNURzn1fZLAiEAy5tm1L41/q9RXFvSBdTJTWD3e8hKdslCUz2lgADGWRI="}]}},"0.0.3":{"name":"node-handlersocket","version":"0.0.3","description":"HandlerSocket client for Node.js","homepage":"http://github.com/koichik/node-handlersocket/","author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp","url":"http://d.hatena.ne.jp/koichik/"},"main":"node-handlersocket","directories":{"lib":"./lib","example":"./example"},"licenses":[{"type":"The MIT License","url":"http://www.opensource.org/licenses/mit-license.php"}],"repositories":{"type":"git","url":"http://github.com/koichik/node-handlersocket.git","private":"git@github.com:koichik/node-handlersocket.git","web":"http://github.com/koichik/node-handlersocket"},"engines":{"node":">=0.3.0"},"_id":"node-handlersocket@0.0.3","_engineSupported":true,"_npmVersion":"0.3.3","_nodeVersion":"v0.4.1","dist":{"shasum":"629f3ce17686ea4730768d4a6f3c3b8edc9d3ed3","tarball":"https://registry.npmjs.org/node-handlersocket/-/node-handlersocket-0.0.3.tgz","integrity":"sha512-Bof9W4bip6GIK6Rj0DU+VwdnXesvnf+Tbu/EWLk+lzGTt49ftE5onqXckTsVOCUV2VpG66CzxO7r1TNrpbJgCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEyHKrTgpMSfx3+FbsC89I+T8UlJ5MbmFSyjUXM++7ANAiEAqyolxHW9LXr8S6vUdY/n4drFRKfIdln/4QOiXj7DSAY="}]}},"0.1.0":{"name":"node-handlersocket","version":"0.1.0","description":"HandlerSocket client for Node.js","keywords":["database","mysql","handlersocket"],"homepage":"http://github.com/koichik/node-handlersocket/","author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp"},"main":"./index.js","directories":{"lib":"./lib","example":"./example"},"licenses":[{"type":"The MIT License","url":"http://www.opensource.org/licenses/mit-license.php"}],"repositories":{"type":"git","url":"http://github.com/koichik/node-handlersocket.git","private":"git@github.com:koichik/node-handlersocket.git","web":"http://github.com/koichik/node-handlersocket"},"engines":{"node":">=0.6.0"},"devDependencies":{"vows":"*","slide":"*"},"scripts":{"pretest":"mysql test < sql/create.sql","test":"./node_modules/vows/bin/vows test/*.js","posttest":"mysql test < sql/drop.sql"},"_npmUser":{"name":"koichik","email":"koichik@improvement.jp"},"_id":"node-handlersocket@0.1.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"3078b973762c4d14c396aa99092366a80fac7587","tarball":"https://registry.npmjs.org/node-handlersocket/-/node-handlersocket-0.1.0.tgz","integrity":"sha512-Ci0CensWc7b8d17xWPDLQ4fCIXpdNGvohwGuDoLGRE341SpAeN7dt9PZ+bIeRyojR+7Z+U+ecXtsmlE9dFMh3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMBcYxwPBH9OL8/PeXaA2oz7UUAL5EpSrJTa5qua6T+QIgVwLLeKsdhdiTK46epAIzb3Kwd/k8R8GXRWpkS0MjUso="}]},"readme":"# node-handlersocket - Pure JavaScript client for HandlerSocket\n\nnode-handlersocket is a pure JavaScript client for HandlerSocket.\n\n[HandlerSocket](https://github.com/DeNADev/HandlerSocket-Plugin-for-MySQL) is a NoSQL plugin for MySQL. See [Matsunobu's blog](http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html) for more information.\n\n# Requirements\n\n- [Node.js](http://nodejs.org/) (>= v0.6.0, tested with v0.6.10)\n- [HandlerSocket Plugin for MySQL](https://github.com/DeNADev/HandlerSocket-Plugin-for-MySQL) (>= v1.1.0, tested with v1.1.0)\n\n# Installation\n\n    npm install node-handlersocket\n\n# Examples\n\n## find (select)\n\n```javascript\nvar hs = require('node-handlersocket');\n\nvar con = hs.connect(function() {\n  con.openIndex('test', 'EMPLOYEE', 'PRIMARY',\n                ['EMPLOYEE_ID', 'EMPLOYEE_NO', 'EMPLOYEE_NAME'],\n                function(err, index) {\n    index.find('=', [1], function(err, records) {\n      console.log(records[0]);\n      con.close();\n    });\n  });\n});\n```\n\n## find (select) with limit and offset\n\n```javascript\nvar hs = require('node-handlersocket');\n\nvar con = hs.connect(function() {\n  con.openIndex('test', 'EMPLOYEE', 'PRIMARY',\n                ['EMPLOYEE_ID', 'EMPLOYEE_NO', 'EMPLOYEE_NAME'],\n                function(err, index) {\n    index.find('>=', [1], {limit: 10, offset: 0}, function(err, records) {\n      records.forEach(function(record) {\n        console.log(record);\n      });\n      con.close();\n    });\n  });\n});\n```\n\n## find (select) with IN\n\n```javascript\nvar hs = require('node-handlersocket');\n\nvar con = hs.connect(function() {\n  con.openIndex('test', 'EMPLOYEE', 'PRIMARY',\n                ['EMPLOYEE_ID', 'EMPLOYEE_NO', 'EMPLOYEE_NAME'],\n                function(err, index) {\n    index.find('=', [hs.in(1, 2, 3)], {limit: 10}, function(err, records) {\n      records.forEach(function(record) {\n        console.log(record);\n      });\n      con.close();\n    });\n  });\n});\n```\n\n## find (select) with filter\n\n```javascript\nvar hs = require('node-handlersocket');\n\nvar con = hs.connect(function() {\n  con.openIndex('test', 'EMPLOYEE', 'PRIMARY',\n                ['EMPLOYEE_ID', 'EMPLOYEE_NO', 'EMPLOYEE_NAME'],\n                ['EMPLOYEE_NO'],\n                function(err, index) {\n    index.find('>=', [1], {\n                 filters: [hs.filter('EMPLOYEE_NO', '<', 7800)],\n                 limit: 10\n               },\n               function(err, records) {\n      records.forEach(function(record) {\n        console.log(record);\n      });\n      con.close();\n    });\n  });\n});\n```\n\n## insert\n\n    var hs = require('node-handlersocket');\n\n    var con = hs.connect({port: 9999});\n    con.on('connect', function() {\n      con.openIndex('test', 'EMPLOYEE', 'PRIMARY',\n                    ['EMPLOYEE_ID', 'EMPLOYEE_NO', 'EMPLOYEE_NAME'],\n                    function(err, index) {\n        index.insert([100, 9999, 'KOICHIK'], function(err) {\n          con.close();\n        });\n      });\n    });\n\n## update\n\n    var hs = require('node-handlersocket');\n\n    var con = hs.connect({port: 9999});\n    con.on('connect', function() {\n      con.openIndex('test', 'EMPLOYEE', 'PRIMARY',\n                    ['EMPLOYEE_ID', 'EMPLOYEE_NO', 'EMPLOYEE_NAME'],\n                    function(err, index) {\n        index.update('=', 100, [100, 9999, 'EBIYURI'], function(err, numRecords) {\n          console.log(numRecords);\n          con.close();\n        });\n      });\n    });\n\n## delete\n\n    var hs = require('node-handlersocket');\n\n    var con = hs.connect({port: 9999});\n    con.on('connect', function() {\n      con.openIndex('test', 'EMPLOYEE', 'PRIMARY', \n                    ['EMPLOYEE_ID', 'EMPLOYEE_NO', 'EMPLOYEE_NAME'],\n                    function(err, index) {\n        index.delete('=', 100, function(err, numRecords) {\n          console.log(numRecords);\n          con.close();\n        });\n      });\n    });\n\n# API\n\n### hs.connect([options], [connectListener])\n\nOpen a connection to HandlerSocket server.\n\n * Parameters\n   * `options`: (optional) an object with the following properties:\n     * `host`: a host name or address (default is `'localhost'`).\n     * `port`: a port number (default is `9998`).\n     * `auth`: an authentication key.\n\n        **Note, the port 9998 only allows read operations, and the port 9999 allows write operations also.** See [HandlerSocket installation document](https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/blob/master/docs-en/installation.en.txt) for more information.\n\n   * `connectListener`: (optional) It is automatically set as a listener for the `'connect'` event.\n * Returns\n   * a new `Connection` object.\n\n### hs.in(values...)\n\nCreates and returns an IN criterion object.\n\n * Parameters\n   * `values`: values of index.\n * Returns\n   * a new IN criterion object.\n\n### hs.filter(column, op, value)\n\nCreates and returns a filter criterion object.\n\n * Parameters\n   * `column`: a column name used by this filter. It must be included in `filterColumns` specified `Connection.openIndex()`.\n   * `op`: a filter operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `value`: a value.\n * Returns\n   * a new filter object.\n\n### hs.while(column, op, value)\n\nCreates and returns a *while* filter criterion object.\n\n * Parameters\n   * `column`: a column name used by this filter. It must be included in `filterColumns` specified `Connection.openIndex()`.\n   * `op`: a filter operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `value`: a value.\n * Returns\n   * a new *while* filter object.\n\n## Connection\n\nAn object representing connection to the HandlerSocket server. It is an instance of `EventEmitter`.\n\n### 'connect' event\n\nEmitted when a connection is established.\n\n* Callback function: ` function()`\n\n### 'close' event\n\nEmitted once the connection is fully closed.\n\n* Callback function: ` function()`\n\n### 'error' event\n\nEmitted when an error occurs.\n\n * Callback function: ` function(err)`\n   * Parameters\n     * `err`: an error that occurred.\n\n### Connection.prototype.openIndex(database, table, index, columns, [filterColumns], callback)\n\nOpen an index.\n\n * Parameters\n   * `database`: a database name.\n   * `table`: a table name.\n   * `index`: an index name. If 'PRIMARY' is specified, the primary index is open.\n   * `columns`: an array of column names.\n   * `filterColumns`: (optional) an array of column names used by a filter.\n   * `callback`: a function to be called when the response received.\n * Callback function: `function(err, index)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `index`: a new `Index` object.\n\n### Connection.prototype.close()\n\nClose the connection.\n\n## Index\n\nAn object representing MySQL's index.\n\n### Index.prototype.find(op, keys, [options], callback)\n\nTo read records from a table using the index.\n\n * Parameters\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filters returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, records)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `records`: an array of records. Each record is array of column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n\n### Index.prototype.insert(values, callback)\n\nTo add records.\n\n * Parametes\n   * values: an array of new column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n\n### Index.prototype.update(op, keys, [options], values, callback)\n\nTo update records.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * values: an array of new column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, numRecords)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `numRecords`: a number of updated records.\n\n### Index.prototype.updateAndGet(op, keys, [options], values, callback)\n\nTo update records and get values before they are updated.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * values: an array of new column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, records)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `records`: an array of records before modification. Each record is an array of column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n\n### Index.prototype.increment(op, keys, [options], values, callback)\n\nTo increment records.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * values: an array of incremental values which corresponds to `columns` parameter of `Connection.openIndex()`.\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, numRecords)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `numRecords`: a number of updated records.\n\n### Index.prototype.incrementAndGet(op, keys, [options], values, callback)\n\nTo increment records and get values before they are updated.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * values: an array of incremental values which corresponds to `columns` parameter of `Connection.openIndex()`.\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, records)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `records`: an array of records before modification. Each record is an array of column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n\n### Index.prototype.decrement(op, keys, [options], values, callback)\n\nTo decrement records.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * values: an array of decremental values which corresponds to `columns` parameter of `Connection.openIndex()`.\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, numRecords)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `numRecords`: a number of updated records.\n\n### Index.prototype.decrementAndGet(op, keys, [options], values, callback)\n\nTo decrement records and get values before they are updated.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * values: an array of decremental values which corresponds to `columns` parameter of `Connection.openIndex()`.\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, records)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `records`: an array of records before modification. Each record is an array of column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n\n### Index.prototype.delete(op, keys, [options], callback)\n\nTo delete records.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optionaal) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, numRecords)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `numRecords`: a number of deleted records.\n\n### Index.prototype.deleteAndGet(op, keys, [options], callback)\n\nTo delete records and get values before they are deleted.\n\n * Parametes\n   * `op`: a search operation, one of `'='`, `'>'`, `'>='`, `'<'` and `'<='`.\n   * `keys`: an array of index values. It can include an IN criterion returned from `hs.in()`.\n   * `options`: (optional) an object which specifies several options.\n     * `filters`: an array of filter returned from `hs.filter()` and/or `hs.while()`.\n     * `limit`: a maximum number of records to be retrieved (defaults to 1).\n     * `offset`: a number of records skipped before retrieving records (defaults to 0)．\n   * `callback`: a function to be called when the response received.\n * Callback Function: `function(err, records)`\n   * Parameters\n     * `err`: an `Error` object when the request failed, otherwise `null`.\n     * `records`: an array of records before deletion. Each  is an array of column values which corresponds to `columns` parameter of `Connection.openIndex()`.\n\n# Test\n\nnode-handlersocket depends on [Vows](http://vowsjs.org/) for unit testing.\n\n    npm test\n\n# Limitations\n\nThe encoding of MySQL server (`default-character-set` parameter in `[mysqld]` section)\nwhich node-handlersocket supports is **only UTF-8**.\n\nBinary data types are not supported.\n\n# License\n\nnode-handlersocket is licensed under the [MIT license](http://www.opensource.org/licenses/mit-license.php).\n","maintainers":[{"name":"koichik","email":"koichik@improvement.jp"}]}},"maintainers":[{"name":"koichik","email":"koichik@improvement.jp"}],"author":{"name":"Koichi Kobayashi","email":"koichik@improvement.jp"},"time":{"modified":"2022-06-21T15:24:05.253Z","created":"2011-02-23T21:56:59.928Z","0.0.0":"2011-02-23T21:56:59.928Z","0.0.1":"2011-02-23T21:56:59.928Z","0.0.2":"2011-02-23T21:56:59.928Z","0.0.3":"2011-02-23T21:57:02.787Z","0.1.0":"2012-02-05T07:38:49.686Z"}}