mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-06 22:15:48 +01:00
added lists to mongo
This commit is contained in:
@@ -318,15 +318,45 @@
|
||||
|
||||
// lists
|
||||
module.listPrepend = function(key, value, callback) {
|
||||
throw new Error('not-implemented');
|
||||
module.isObjectField(key, 'array', function(err, exists) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
if(exists) {
|
||||
db.collection('objects').update({_key:key}, {'$set': {'array.-1': value}}, {upsert:true, w:1 }, function(err, result) {
|
||||
callback(err, result);
|
||||
});
|
||||
} else {
|
||||
module.listAppend(key, value, callback);
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
module.listAppend = function(key, value, callback) {
|
||||
throw new Error('not-implemented');
|
||||
db.collection('objects').update({ _key: key }, { $push: { array: value } }, {upsert:true, w:1}, function(err, result) {
|
||||
callback(err, result);
|
||||
});
|
||||
}
|
||||
|
||||
module.getListRange = function(key, start, stop, callback) {
|
||||
throw new Error('not-implemented');
|
||||
|
||||
if(stop === -1) {
|
||||
// mongo doesnt allow -1 as the count argument in slice
|
||||
// pass in a large value to retrieve the whole array
|
||||
stop = Math.pow(2, 31) - 2;
|
||||
}
|
||||
|
||||
db.collection('objects').findOne({_key:key}, { array: { $slice: [start, stop - start + 1] }}, function(err, data) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
if(data && data.array) {
|
||||
callback(err, data.array);
|
||||
} else {
|
||||
callback(err, []);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -183,6 +183,28 @@ var DebugRoute = function(app) {
|
||||
});*/
|
||||
}
|
||||
|
||||
function listAppend(callback) {
|
||||
db.listAppend('myList5', 5, function(err, data) {
|
||||
console.log('listAppend return', data);
|
||||
callback(err, {'listAppend': data});
|
||||
});
|
||||
}
|
||||
|
||||
function listPrepend(callback) {
|
||||
db.listPrepend('myList5', 4, function(err, data) {
|
||||
console.log('listPrepend return', data);
|
||||
callback(err, {'listPrepend': data});
|
||||
});
|
||||
}
|
||||
|
||||
function getListRange(callback) {
|
||||
db.getListRange('myList5', 0, 5, function(err, data) {
|
||||
console.log('getListRange return', data);
|
||||
callback(err, {'getListRange': data});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var objectTasks = [
|
||||
//createUser,
|
||||
getUser,
|
||||
@@ -211,8 +233,13 @@ var DebugRoute = function(app) {
|
||||
getSortedSetRange,
|
||||
];
|
||||
|
||||
var listTasks = [
|
||||
listAppend,
|
||||
listPrepend,
|
||||
getListRange
|
||||
];
|
||||
|
||||
require('async').series(sortedSetTasks, function(err, results) {
|
||||
require('async').series(listTasks, function(err, results) {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
res.send(err.message);
|
||||
|
||||
Reference in New Issue
Block a user