diff --git a/packages/client/lib/client/index.spec.ts b/packages/client/lib/client/index.spec.ts index 308ce1e9c4..c48505c758 100644 --- a/packages/client/lib/client/index.spec.ts +++ b/packages/client/lib/client/index.spec.ts @@ -294,6 +294,20 @@ describe('Client', () => { } } }); + + testUtils.testWithClient('client.multi.{command}.exec should flatten array arguments', async client => { + assert.deepEqual( + await client.multi() + .sAdd('a', ['b', 'c']) + .v4.exec(), + [2]) + }, { + ...GLOBAL.SERVERS.OPEN, + clientOptions: { + legacyMode: true + } + }); + }); describe('events', () => { diff --git a/packages/client/lib/client/multi-command.ts b/packages/client/lib/client/multi-command.ts index cce0b515f1..7b28637d67 100644 --- a/packages/client/lib/client/multi-command.ts +++ b/packages/client/lib/client/multi-command.ts @@ -87,7 +87,7 @@ export default class RedisClientMultiCommand { #defineLegacyCommand(name: string): void { this.v4[name] = (this as any)[name].bind(this.v4); (this as any)[name] = - (...args: Array): void => (this as any).addCommand(name, args); + (...args: Array): void => (this as any).addCommand(name, ...args); } commandsExecutor(command: RedisCommand, args: Array): this {