mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 12:55:44 +02:00
perf: switch to set, remove parseFloat in redis
add test to cover float
This commit is contained in:
@@ -301,7 +301,7 @@ module.exports = function (module) {
|
|||||||
|
|
||||||
const returnData = [];
|
const returnData = [];
|
||||||
let done;
|
let done;
|
||||||
const seen = Object.create(null);
|
const seen = new Set();
|
||||||
do {
|
do {
|
||||||
/* eslint-disable no-await-in-loop */
|
/* eslint-disable no-await-in-loop */
|
||||||
const res = await module.client.zScan(params.key, cursor, { MATCH: params.match, COUNT: 5000 });
|
const res = await module.client.zScan(params.key, cursor, { MATCH: params.match, COUNT: 5000 });
|
||||||
@@ -310,11 +310,11 @@ module.exports = function (module) {
|
|||||||
|
|
||||||
for (let i = 0; i < res.members.length; i ++) {
|
for (let i = 0; i < res.members.length; i ++) {
|
||||||
const item = res.members[i];
|
const item = res.members[i];
|
||||||
if (!seen[item.value]) {
|
if (!seen.has(item.value)) {
|
||||||
seen[item.value] = 1;
|
seen.add(item.value);
|
||||||
|
|
||||||
if (params.withScores) {
|
if (params.withScores) {
|
||||||
returnData.push({ value: item.value, score: parseFloat(item.score) });
|
returnData.push({ value: item.value, score: item.score });
|
||||||
} else {
|
} else {
|
||||||
returnData.push(item.value);
|
returnData.push(item.value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,6 +93,22 @@ NUMERIC)-- WsPn&query[cid]=-1&parentCid=0&selectedCids[]=-1&privilege=topics:rea
|
|||||||
});
|
});
|
||||||
assert.strictEqual(data.length, 0);
|
assert.strictEqual(data.length, 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should handle floating point scores', async () => {
|
||||||
|
await db.sortedSetAdd('scanzset6', [1.5, 2.5, 3.5, 4.5, 5.5, 6.5], ['aaab{', 'bbbb', 'bbcb', 'ddb', 'dddd', 'adb']);
|
||||||
|
const data = await db.getSortedSetScan({
|
||||||
|
key: 'scanzset6',
|
||||||
|
match: '*b',
|
||||||
|
withScores: true,
|
||||||
|
});
|
||||||
|
data.sort((a, b) => b.score - a.score);
|
||||||
|
assert.deepStrictEqual(data, [
|
||||||
|
{ value: 'adb', score: 6.5 },
|
||||||
|
{ value: 'ddb', score: 4.5 },
|
||||||
|
{ value: 'bbcb', score: 3.5 },
|
||||||
|
{ value: 'bbbb', score: 2.5 },
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('sortedSetAdd()', () => {
|
describe('sortedSetAdd()', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user