mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-03 20:45:58 +01:00
convert uid mappings to sorted sets
email:uid, username:uid, userslug:uid, fullname:uid all converted to sorted sets prevents hitting mongodb document size limit
This commit is contained in:
@@ -21,7 +21,7 @@ var db = require('./database'),
|
||||
schemaDate, thisSchemaDate,
|
||||
|
||||
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema
|
||||
latestSchema = Date.UTC(2015, 1, 25, 6);
|
||||
latestSchema = Date.UTC(2015, 4, 7);
|
||||
|
||||
Upgrade.check = function(callback) {
|
||||
db.get('schemaDate', function(err, value) {
|
||||
@@ -938,7 +938,7 @@ Upgrade.upgrade = function(callback) {
|
||||
}
|
||||
winston.info('[2015/02/24] Upgrading privilege groups to system groups done');
|
||||
Upgrade.update(thisSchemaDate, next);
|
||||
})
|
||||
});
|
||||
});
|
||||
} else {
|
||||
winston.info('[2015/02/24] Upgrading privilege groups to system groups skipped');
|
||||
@@ -963,6 +963,48 @@ Upgrade.upgrade = function(callback) {
|
||||
winston.info('[2015/02/25] Upgrading menu items to dynamic navigation system skipped');
|
||||
next();
|
||||
}
|
||||
},
|
||||
function(next) {
|
||||
function upgradeHashToSortedSet(hash, callback) {
|
||||
db.getObject(hash, function(err, oldHash) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
db.rename(hash, hash + '_old', function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
var keys = Object.keys(oldHash);
|
||||
async.each(keys, function(key, next) {
|
||||
db.sortedSetAdd(hash, oldHash[key], key, next);
|
||||
}, callback);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
thisSchemaDate = Date.UTC(2015, 4, 7);
|
||||
if (schemaDate < thisSchemaDate) {
|
||||
updatesMade = true;
|
||||
winston.info('[2015/02/25] Upgrading uid mappings to sorted set');
|
||||
|
||||
async.series([
|
||||
async.apply(upgradeHashToSortedSet, 'email:uid'),
|
||||
async.apply(upgradeHashToSortedSet, 'fullname:uid'),
|
||||
async.apply(upgradeHashToSortedSet, 'username:uid'),
|
||||
async.apply(upgradeHashToSortedSet, 'userslug:uid'),
|
||||
], function(err) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
winston.info('[2015/05/07] Upgrading uid mappings to sorted set done');
|
||||
Upgrade.update(thisSchemaDate, next);
|
||||
});
|
||||
|
||||
} else {
|
||||
winston.info('[2015/05/07] Upgrading uid mappings to sorted set skipped');
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
// Add new schema updates here
|
||||
|
||||
Reference in New Issue
Block a user