viewmodel
Advanced tools
Comparing version 1.3.3 to 1.3.4
@@ -174,2 +174,39 @@ 'use strict'; | ||
scan: function (key, cursor, handleKeys, callback) { | ||
var self = this; | ||
if (!callback) { | ||
callback = handleKeys; | ||
handleKeys = cursor; | ||
cursor = 0; | ||
} | ||
(function scanRecursive (curs) { | ||
self.client.scan(curs, 'match', key, function (err, res) { | ||
if (err) { | ||
return callback(err); | ||
} | ||
function next () { | ||
if (res[0] === '0') { | ||
callback(null); | ||
} else { | ||
scanRecursive(res[0]); | ||
} | ||
} | ||
if (res[1].length === 0) { | ||
return next(); | ||
} | ||
handleKeys(res[1], function (err) { | ||
if (err) { | ||
return callback(err); | ||
} | ||
next(); | ||
}); | ||
}); | ||
})(cursor); | ||
}, | ||
find: function(query, queryOptions, callback) { | ||
@@ -180,10 +217,71 @@ | ||
var self = this; | ||
this.client.keys(this.prefix + ':*', function(err, docs) { | ||
if (queryOptions.skip !== undefined && queryOptions.limit !== undefined) { | ||
docs = docs.slice(queryOptions.skip, queryOptions.limit + queryOptions.skip + 1); | ||
var allKeys = []; | ||
this.scan(this.prefix + ':*', | ||
function (keys, fn) { | ||
allKeys = allKeys.concat(keys); | ||
fn(); | ||
}, function (err) { | ||
if (err) { | ||
if (callback) callback(err); | ||
return; | ||
} | ||
if (queryOptions.skip !== undefined && queryOptions.limit !== undefined) { | ||
allKeys = allKeys.slice(queryOptions.skip, queryOptions.limit + queryOptions.skip + 1); | ||
} | ||
// docs.reverse(); | ||
async.map(allKeys, function(doc, callback) { | ||
self.client.get(doc, function (err, data) { | ||
if (err) { | ||
if (callback) callback(err); | ||
return; | ||
} | ||
if (!data) { | ||
if (callback) callback(null, null); | ||
return; | ||
} | ||
var result; | ||
try { | ||
result = jsondate.parse(data.toString()); | ||
} catch (error) { | ||
if (callback) callback(err); | ||
return; | ||
} | ||
var vm = new ViewModel(result, self); | ||
vm.actionOnCommit = 'update'; | ||
if (callback) callback(null, vm); | ||
}); | ||
}, callback); | ||
} | ||
); | ||
}, | ||
// docs.reverse(); | ||
async.map(docs, function(doc, callback) { | ||
self.client.get(doc, function (err, data) { | ||
findOne: function(query, queryOptions, callback) { | ||
this.checkConnection(); | ||
var self = this; | ||
var key; | ||
this.scan(this.prefix + ':*', | ||
function (keys, fn) { | ||
if (!key) { | ||
key = keys[0]; | ||
} | ||
fn(); | ||
}, function (err) { | ||
if (err || !key) { | ||
if (callback) callback(err); | ||
return; | ||
} | ||
self.client.get(key, function (err, data) { | ||
if (err) { | ||
@@ -212,41 +310,6 @@ if (callback) callback(err); | ||
}); | ||
}, callback); | ||
}); | ||
} | ||
); | ||
}, | ||
findOne: function(query, queryOptions, callback) { | ||
this.checkConnection(); | ||
var self = this; | ||
this.client.keys(this.prefix + ':*', function(err, docs) { | ||
self.client.get(docs[0], function (err, data) { | ||
if (err) { | ||
if (callback) callback(err); | ||
return; | ||
} | ||
if (!data) { | ||
if (callback) callback(null, null); | ||
return; | ||
} | ||
var result; | ||
try { | ||
result = jsondate.parse(data.toString()); | ||
} catch (error) { | ||
if (callback) callback(err); | ||
return; | ||
} | ||
var vm = new ViewModel(result, self); | ||
vm.actionOnCommit = 'update'; | ||
if (callback) callback(null, vm); | ||
}); | ||
}); | ||
}, | ||
commit: function (vm, callback) { | ||
@@ -253,0 +316,0 @@ |
{ | ||
"author": "adrai", | ||
"name": "viewmodel", | ||
"version": "1.3.3", | ||
"version": "1.3.4", | ||
"private": false, | ||
@@ -14,8 +14,8 @@ "main": "index.js", | ||
"dependencies": { | ||
"async": "0.9.0", | ||
"async": "1.2.1", | ||
"dotty": "0.0.2", | ||
"jsondate": "0.0.1", | ||
"lodash": "3.6.0", | ||
"lodash": "3.9.3", | ||
"node-uuid": "1.4.3", | ||
"sift": "1.1.0", | ||
"sift": "1.1.1", | ||
"tolerance": "1.0.0" | ||
@@ -22,0 +22,0 @@ }, |
@@ -0,1 +1,4 @@ | ||
## [v1.3.3](https://github.com/adrai/node-viewmodel/compare/v1.3.3...v1.3.4) | ||
- redis: replace .keys() calls with .scan() calls => scales better | ||
## [v1.3.3](https://github.com/adrai/node-viewmodel/compare/v1.3.2...v1.3.3) | ||
@@ -2,0 +5,0 @@ - fix errors in azureTable implementation [#13](https://github.com/adrai/node-viewmodel/pull/13) thanks to [rvin100](https://github.com/rvin100) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
82964
20
2225
+ Addedasync@1.2.1(transitive)
+ Addedlodash@3.9.3(transitive)
+ Addedsift@1.1.1(transitive)
- Removedasync@0.9.0(transitive)
- Removedlodash@3.6.0(transitive)
- Removedsift@1.1.0(transitive)
Updatedasync@1.2.1
Updatedlodash@3.9.3
Updatedsift@1.1.1