mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-07 16:12:53 +01:00
more mongo and redis stuff
This commit is contained in:
@@ -154,6 +154,13 @@
|
||||
});
|
||||
}
|
||||
|
||||
module.getObjects = function(keys, callback) {
|
||||
db.collection('objects').find({_key:{$in:keys}}, {_id:0, _key:0}).toArray(function(err, data) {
|
||||
|
||||
callback(err, data);
|
||||
});
|
||||
}
|
||||
|
||||
module.getObjectField = function(key, field, callback) {
|
||||
module.getObjectFields(key, [field], function(err, data) {
|
||||
if(err) {
|
||||
|
||||
@@ -170,6 +170,18 @@
|
||||
redisClient.hgetall(key, callback);
|
||||
}
|
||||
|
||||
module.getObjects = function(keys, callback) {
|
||||
var multi = redisClient.multi();
|
||||
|
||||
for(var x=0; x<keys.length; ++x) {
|
||||
multi.hgetall(keys[x]);
|
||||
}
|
||||
|
||||
multi.exec(function (err, replies) {
|
||||
callback(err, replies);
|
||||
});
|
||||
}
|
||||
|
||||
module.getObjectField = function(key, field, callback) {
|
||||
module.getObjectFields(key, [field], function(err, data) {
|
||||
if(err) {
|
||||
|
||||
@@ -59,16 +59,14 @@ var async = require('async'),
|
||||
};
|
||||
|
||||
function destroy(nid) {
|
||||
var multi = RDB.multi();
|
||||
|
||||
multi.del('notifications:' + nid);
|
||||
multi.srem('notifications', nid);
|
||||
|
||||
multi.exec(function(err) {
|
||||
if (err) {
|
||||
winston.error('Problem deleting expired notifications. Stack follows.');
|
||||
winston.error(err.stack);
|
||||
}
|
||||
db.delete('notifications:' + nid, function(err, result) {
|
||||
db.setRemove('notifications', nid, function(err, result) {
|
||||
if (err) {
|
||||
winston.error('Problem deleting expired notifications. Stack follows.');
|
||||
winston.error(err.stack);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -193,6 +191,11 @@ var async = require('async'),
|
||||
};
|
||||
|
||||
Notifications.prune = function(cutoff) {
|
||||
// TODO: this function wont work with dbal in its current state
|
||||
// things to figure out
|
||||
// 1 - RDB.keys mongo uses regex, redis uses global patterns?
|
||||
// 2 - Need to remove the RDB.multi
|
||||
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
winston.info('[notifications.prune] Removing expired notifications from the database.');
|
||||
}
|
||||
|
||||
17
src/posts.js
17
src/posts.js
@@ -364,15 +364,14 @@ var db = require('./database'),
|
||||
}
|
||||
|
||||
Posts.getPostsByPids = function(pids, callback) {
|
||||
var posts = [],
|
||||
multi = RDB.multi();
|
||||
var keys = [];
|
||||
|
||||
for(var x=0, numPids=pids.length; x<numPids; x++) {
|
||||
multi.hgetall("post:" + pids[x]);
|
||||
keys.push('post:' + pids[x]);
|
||||
}
|
||||
|
||||
multi.exec(function (err, replies) {
|
||||
async.map(replies, function(postData, _callback) {
|
||||
db.getObjects(keys, function(err, data) {
|
||||
async.map(data, function(postData, _callback) {
|
||||
if (postData) {
|
||||
|
||||
try {
|
||||
@@ -382,10 +381,10 @@ var db = require('./database'),
|
||||
winston.err('invalid time value');
|
||||
}
|
||||
|
||||
postTools.parse(postData.content, function(err, content) {
|
||||
postData.content = content;
|
||||
postTools.parse(postData.content, function(err, content) {
|
||||
postData.content = content;
|
||||
_callback(null, postData);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
_callback(null);
|
||||
}
|
||||
@@ -396,7 +395,7 @@ var db = require('./database'),
|
||||
return callback(err, null);
|
||||
}
|
||||
});
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
Posts.getCidByPid = function(pid, callback) {
|
||||
|
||||
@@ -107,6 +107,13 @@ var DebugRoute = function(app) {
|
||||
});
|
||||
}
|
||||
|
||||
function getObjects(callback) {
|
||||
db.getObjects(['testing1', 'testing2', 'retardation', 'user:1'], function(err, data) {
|
||||
console.log('getObjects return ', data);
|
||||
callback(err, {'getObjects':data});
|
||||
});
|
||||
}
|
||||
|
||||
function setObjectField(callback) {
|
||||
db.setObjectField(objectKey, 'reputation', 5, function(err, result) {
|
||||
console.log('setObjectField return', result);
|
||||
@@ -302,7 +309,8 @@ var DebugRoute = function(app) {
|
||||
getObjectValues,
|
||||
isObjectField,
|
||||
incrObjectFieldBy,
|
||||
getObject
|
||||
getObject,
|
||||
getObjects
|
||||
];
|
||||
|
||||
var sortedSetTasks = [
|
||||
@@ -342,7 +350,7 @@ var DebugRoute = function(app) {
|
||||
isMemberOfSets
|
||||
];
|
||||
|
||||
require('async').series(listTasks, function(err, results) {
|
||||
require('async').series(objectTasks, function(err, results) {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
res.send(err.message);
|
||||
|
||||
@@ -168,14 +168,16 @@ var db = require('./database'),
|
||||
|
||||
topics.getTopicFields(tid, ['cid', 'lastposttime'], function(err, topicData) {
|
||||
var oldCid = topicData.cid;
|
||||
var multi = RDB.multi();
|
||||
|
||||
multi.zrem('categories:' + oldCid + ':tid', tid);
|
||||
multi.zadd('categories:' + cid + ':tid', topicData.lastposttime, tid);
|
||||
db.sortedSetRemove('categories:' + oldCid + ':tid', tid, function(err, result) {
|
||||
db.sortedSetAdd('categories:' + cid + ':tid', topicData.lastposttime, tid, function(err, result) {
|
||||
|
||||
multi.exec(function(err, result) {
|
||||
|
||||
if (!err && result[0] === 1 && result[1] === 1) {
|
||||
if(err) {
|
||||
socket.emit('api:topic.move', {
|
||||
status: 'error'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
topics.setTopicField(tid, 'cid', cid);
|
||||
|
||||
@@ -201,11 +203,7 @@ var db = require('./database'),
|
||||
websockets.in('topic_' + tid).emit('event:topic_moved', {
|
||||
tid: tid
|
||||
});
|
||||
} else {
|
||||
socket.emit('api:topic.move', {
|
||||
status: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -140,7 +140,6 @@ var path = require('path'),
|
||||
app.use(express.bodyParser()); // Puts POST vars in request.body
|
||||
app.use(express.cookieParser()); // If you want to parse cookies (res.cookies)
|
||||
|
||||
// TODO : this uses redis
|
||||
app.use(express.session({
|
||||
store: db.sessionStore,
|
||||
secret: nconf.get('secret'),
|
||||
|
||||
Reference in New Issue
Block a user