tons of fixes to mongo and redis, to make returns the same

v1.18.x
Baris Soner Usakli 11 years ago
parent dcbe4ffd4a
commit 1564e3d530

@ -86,7 +86,7 @@
// key // key
module.exists = function(key, callback) { module.exists = function(key, callback) {
db.collection('objects').findOne({_key:key}, function(err, item) { db.collection('objects').findOne({$or:[{_key:key}, {setName:key}]}, function(err, item) {
callback(err, item !== undefined && item !== null); callback(err, item !== undefined && item !== null);
}); });
} }
@ -176,9 +176,27 @@
} }
module.getObjects = function(keys, callback) { module.getObjects = function(keys, callback) {
db.collection('objects').find({_key:{$in:keys}}, {_id:0, _key:0}).toArray(function(err, data) { db.collection('objects').find({_key:{$in:keys}}, {_id:0}).toArray(function(err, data) {
if(err) {
return callback(err);
}
var returnData = [],
resultIndex = 0;
for(var i=0; i<keys.length; ++i) {
if(data && resultIndex < data.length && keys[i] === data[resultIndex]._key) {
delete data[resultIndex]._key;
returnData.push(data[resultIndex]);
++resultIndex;
} else {
returnData.push(null);
}
}
callback(err, data); callback(err, returnData);
}); });
} }
@ -207,15 +225,12 @@
if(item === null) { if(item === null) {
item = {}; item = {};
for(var i=0; i<fields.length; ++i) { }
for(var i=0; i<fields.length; ++i) {
if(item[fields[i]] === null || item[fields[i]] === undefined) {
item[fields[i]] = null; item[fields[i]] = null;
} }
} else {
for(var i=0; i<fields.length; ++i) {
if(item[fields[i]] === null || item[fields[i]] === undefined) {
item[fields[i]] = null;
}
}
} }
removeHiddenFields(item); removeHiddenFields(item);
@ -246,8 +261,7 @@
if(err) { if(err) {
return callback(err); return callback(err);
} }
callback(err, !!item && item[field] !== undefined && item[field] !== null);
callback(err, item && item[field]!== undefined && item[field] !== null);
}); });
} }
@ -310,7 +324,13 @@
module.isMemberOfSets = function(sets, value, callback) { module.isMemberOfSets = function(sets, value, callback) {
function iterator(set, next) { function iterator(set, next) {
module.isSetMember(set, value, next); module.isSetMember(set, value, function(err, result) {
if(err) {
return next(err);
}
next(null, result?1:0);
});
} }
async.map(sets, iterator, function(err, result) { async.map(sets, iterator, function(err, result) {
@ -477,11 +497,39 @@
} }
module.sortedSetScore = function(key, value, callback) { module.sortedSetScore = function(key, value, callback) {
throw new Error('not-implemented'); db.collection('objects').findOne({setName:key, value: value}, {fields:{score:1}}, function(err, result) {
if(err) {
return callback(err);
}
if(result) {
return callback(null, result.score);
}
callback(err, null);
});
} }
module.sortedSetsScore = function(keys, value, callback) { module.sortedSetsScore = function(keys, value, callback) {
throw new Error('not-implemented'); db.collection('objects').find({setName:{$in:keys}, value: value}).toArray(function(err, result) {
if(err) {
return callback(err);
}
var returnData = [],
resultIndex = 0;
for(var i=0; i<keys.length; ++i) {
if(result && resultIndex < result.length && keys[i] === result[resultIndex].setName) {
returnData.push(result[resultIndex].score);
++resultIndex;
} else {
returnData.push(null);
}
}
callback(null, returnData);
});
} }
// lists // lists

@ -318,7 +318,7 @@
module.sortedSetsScore = function(keys, value, callback) { module.sortedSetsScore = function(keys, value, callback) {
var multi = redisClient.multi(); var multi = redisClient.multi();
for(x=0; x<keys.length; ++x) { for(var x=0; x<keys.length; ++x) {
multi.zscore(keys[x], value); multi.zscore(keys[x], value);
} }

@ -92,8 +92,14 @@ var DebugRoute = function(app) {
}); });
app.get('/mongo', function(req, res) { app.get('/mongo', function(req, res) {
var dbtype = 'mongo';
if(req.query.db) {
dbtype = req.query.db;
}
var db = require('./../database/' + dbtype);
var db = require('./../database');
var objectKey = 'testing4'; var objectKey = 'testing4';
function createUser(callback) { function createUser(callback) {
@ -208,6 +214,20 @@ var DebugRoute = function(app) {
}); });
} }
function sortedSetScore(callback) {
db.sortedSetScore('users:joindate', 1, function(err, data) {
console.log('sortedSetScore return', data);
callback(err, {'sortedSetScore': data});
});
}
function sortedSetsScore(callback) {
db.sortedSetsScore(['users:joindate', 'users:derp', 'users:postcount'], 1, function(err, data) {
console.log('sortedSetsScore return', data);
callback(err, {'sortedSetsScore': data});
});
}
function listAppend(callback) { function listAppend(callback) {
db.listAppend('myList5', 5, function(err, data) { db.listAppend('myList5', 5, function(err, data) {
console.log('listAppend return', data); console.log('listAppend return', data);
@ -345,7 +365,9 @@ var DebugRoute = function(app) {
getSortedSetRange, getSortedSetRange,
//sortedSetRemove, //sortedSetRemove,
getSortedSetRange, getSortedSetRange,
sortedSetCount sortedSetCount,
sortedSetScore,
sortedSetsScore
]; ];
var listTasks = [ var listTasks = [
@ -385,10 +407,9 @@ var DebugRoute = function(app) {
var miscTests = [ var miscTests = [
function(next) { function(next) {
db.isObjectField('email:uid', 'barisusakli@gmail.com', function(err, exists) { db.sortedSetScore('users:joindate', 1, function(err, result) {
console.log(err, exists); next(err, result);
next(err, exists); })
});
} }
]; ];

@ -315,7 +315,7 @@ var async = require('async'),
} }
async.whilst(continueCondition, function(callback) { async.whilst(continueCondition, function(callback) {
RDB.zrevrange('topics:recent', start, stop, function(err, tids) { db.getSortedSetRevRange('topics:recent', start, stop, function(err, tids) {
if (err) { if (err) {
return callback(err); return callback(err);
} }

Loading…
Cancel
Save