mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 03:26:04 +01:00
This commit is contained in:
@@ -25,9 +25,24 @@ module.exports = function (db, module) {
|
||||
if (!key) {
|
||||
return callback();
|
||||
}
|
||||
if (Array.isArray(key)) {
|
||||
db.collection('objects').find({ _key: { $in: key } }).toArray(function (err, data) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
var map = {};
|
||||
data.forEach(function (item) {
|
||||
map[item._key] = true;
|
||||
});
|
||||
|
||||
callback(null, key.map(key => !!map[key]));
|
||||
});
|
||||
} else {
|
||||
db.collection('objects').findOne({ _key: key }, function (err, item) {
|
||||
callback(err, item !== undefined && item !== null);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.delete = function (key, callback) {
|
||||
|
||||
@@ -30,10 +30,30 @@ module.exports = function (db, module) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
if (Array.isArray(key)) {
|
||||
query({
|
||||
name: 'exists',
|
||||
text: `
|
||||
SELECT EXISTS(SELECT *
|
||||
SELECT o."_key" k
|
||||
FROM "legacy_object_live" o
|
||||
WHERE o."_key" = ANY($1::TEXT[])`,
|
||||
values: [key],
|
||||
}, function (err, res) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
callback(null, key.map(function (k) {
|
||||
return res.rows.some(function (r) {
|
||||
return r.k === k;
|
||||
});
|
||||
}));
|
||||
});
|
||||
} else {
|
||||
query({
|
||||
name: 'exists',
|
||||
text: `
|
||||
SELECT EXISTS(SELECT *
|
||||
FROM "legacy_object_live"
|
||||
WHERE "_key" = $1::TEXT
|
||||
LIMIT 1) e`,
|
||||
@@ -45,6 +65,7 @@ SELECT EXISTS(SELECT *
|
||||
|
||||
callback(null, res.rows[0].e);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.delete = function (key, callback) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function (redisClient, module) {
|
||||
var helpers = module.helpers.redis;
|
||||
|
||||
module.flushdb = function (callback) {
|
||||
redisClient.send_command('flushdb', [], function (err) {
|
||||
if (typeof callback === 'function') {
|
||||
@@ -20,9 +22,15 @@ module.exports = function (redisClient, module) {
|
||||
};
|
||||
|
||||
module.exists = function (key, callback) {
|
||||
if (Array.isArray(key)) {
|
||||
helpers.multiKeys(redisClient, 'exists', key, function (err, data) {
|
||||
callback(err, data && data.map(exists => exists === 1));
|
||||
});
|
||||
} else {
|
||||
redisClient.exists(key, function (err, exists) {
|
||||
callback(err, exists === 1);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.delete = function (key, callback) {
|
||||
|
||||
@@ -53,6 +53,14 @@ describe('Key methods', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('should work for an array of keys', function (done) {
|
||||
db.exists(['testKey', 'doesnotexist'], function (err, exists) {
|
||||
assert.ifError(err);
|
||||
assert.deepStrictEqual(exists, [true, false]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should delete a key without error', function (done) {
|
||||
db.delete('testKey', function (err) {
|
||||
assert.ifError(err);
|
||||
|
||||
Reference in New Issue
Block a user