mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 11:35:55 +01:00
fixed mongo setAdd and setRemove to accept arrays like redis, fixed infinite scroll for mongo
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
module.init = function(callback) {
|
module.init = function(callback) {
|
||||||
|
|
||||||
mongoClient.connect('mongodb://'+ nconf.get('mongo:host') + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database'), function(err, _db) {
|
mongoClient.connect('mongodb://'+ nconf.get('mongo:host') + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database'), function(err, _db) {
|
||||||
if(err) {
|
if(err) {
|
||||||
winston.error("NodeBB could not connect to your Mongo database. Mongo returned the following error: " + err.message);
|
winston.error("NodeBB could not connect to your Mongo database. Mongo returned the following error: " + err.message);
|
||||||
@@ -424,10 +425,23 @@
|
|||||||
// sets
|
// sets
|
||||||
|
|
||||||
module.setAdd = function(key, value, callback) {
|
module.setAdd = function(key, value, callback) {
|
||||||
if(value !== null && value !== undefined) {
|
if(!Array.isArray(value)) {
|
||||||
value = value.toString();
|
value = [value];
|
||||||
}
|
}
|
||||||
db.collection('objects').update({_key:key}, {$addToSet: { members: value }}, {upsert:true, w: 1}, function(err, result) {
|
|
||||||
|
value.forEach(function(element, index, array) {
|
||||||
|
array[index] = element ? element.toString() : element;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
db.collection('objects').update({_key:key},
|
||||||
|
{
|
||||||
|
$addToSet: { members: { $each: value } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
upsert:true, w: 1
|
||||||
|
}
|
||||||
|
, function(err, result) {
|
||||||
if(typeof callback === 'function') {
|
if(typeof callback === 'function') {
|
||||||
callback(err, result);
|
callback(err, result);
|
||||||
}
|
}
|
||||||
@@ -435,10 +449,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.setRemove = function(key, value, callback) {
|
module.setRemove = function(key, value, callback) {
|
||||||
if(value !== null && value !== undefined) {
|
if(!Array.isArray(value)) {
|
||||||
value = value.toString();
|
value = [value];
|
||||||
}
|
}
|
||||||
db.collection('objects').update({_key:key, members: value}, {$pull : {members: value}}, function(err, result) {
|
|
||||||
|
value.forEach(function(element, index, array) {
|
||||||
|
array[index] = element ? element.toString() : element;
|
||||||
|
});
|
||||||
|
|
||||||
|
db.collection('objects').update( { _key: key }, { $pullAll: { members: value } }, function(err, result) {
|
||||||
if(typeof callback === 'function') {
|
if(typeof callback === 'function') {
|
||||||
callback(err, result);
|
callback(err, result);
|
||||||
}
|
}
|
||||||
@@ -456,17 +475,26 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.isMemberOfSets = function(sets, value, callback) {
|
module.isMemberOfSets = function(sets, value, callback) {
|
||||||
function iterator(set, next) {
|
|
||||||
module.isSetMember(set, value, function(err, result) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
next(null, result?1:0);
|
if(value !== null && value !== undefined) {
|
||||||
});
|
value = value.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
async.map(sets, iterator, callback);
|
db.collection('objects').find({_key: {$in : sets}, members: value}).toArray(function(err, result) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = result.map(function(item) {
|
||||||
|
return item._key;
|
||||||
|
});
|
||||||
|
|
||||||
|
result = sets.map(function(set) {
|
||||||
|
return result.indexOf(set) !== -1 ? 1 : 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
callback(err, result);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.getSetMembers = function(key, callback) {
|
module.getSetMembers = function(key, callback) {
|
||||||
@@ -655,16 +683,18 @@
|
|||||||
if(value !== null && value !== undefined) {
|
if(value !== null && value !== undefined) {
|
||||||
value = value.toString();
|
value = value.toString();
|
||||||
}
|
}
|
||||||
module.getSortedSetRange(key, 0, -1, function(err, result) {
|
module.getSortedSetRevRange(key, 0, -1, function(err, result) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var rank = result.indexOf(value);
|
var rank = result.indexOf(value);
|
||||||
|
|
||||||
if(rank === -1) {
|
if(rank === -1) {
|
||||||
return callback(null, null);
|
return callback(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(null, result.length - rank - 1);
|
callback(null, rank);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ var fs = require('fs'),
|
|||||||
plugins.push(meta.config['theme:id']);
|
plugins.push(meta.config['theme:id']);
|
||||||
|
|
||||||
async.each(plugins, function(plugin, next) {
|
async.each(plugins, function(plugin, next) {
|
||||||
|
|
||||||
if (!plugin) {
|
if (!plugin) {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
@@ -377,7 +378,7 @@ var fs = require('fs'),
|
|||||||
}).filter(function(file) {
|
}).filter(function(file) {
|
||||||
var stats = fs.statSync(file),
|
var stats = fs.statSync(file),
|
||||||
isPlugin = file.substr(npmPluginPath.length + 1, 14) === 'nodebb-plugin-' || file.substr(npmPluginPath.length + 1, 14) === 'nodebb-widget-';
|
isPlugin = file.substr(npmPluginPath.length + 1, 14) === 'nodebb-plugin-' || file.substr(npmPluginPath.length + 1, 14) === 'nodebb-widget-';
|
||||||
|
|
||||||
if (stats.isDirectory() && isPlugin) return true;
|
if (stats.isDirectory() && isPlugin) return true;
|
||||||
else return false;
|
else return false;
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user