无法使函数将数组推送到nodejs中的redis列表

olmpazwi  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(516)

我使用redis list来存储nodejs中键的值。我创建了以下函数并将其导出到另一个文件以使其成为api:

async function set(id, ...seats) {
    var seatArr = [];
    for(var i = 0; i < seats.length; i++)
    {
        seatArr = seatArr.concat(seats[i]);
    }
    try{
        result = await client.rpush('seats_'+id, ...seatArr);
    } catch(err) {
        console.log(err)
    }

}
module.exports = {
    set : set()
};

但我得到以下错误:

{ ReplyError: ERR wrong number of arguments for 'rpush' command
    at parseError (/home/shivank/Music/node-app/ticket-booking/node_modules/redis-parser/lib/parser.js:179:12)
    at parseType (/home/shivank/Music/node-app/ticket-booking/node_modules/redis-parser/lib/parser.js:302:14) command: 'RPUSH', args: [ 'seats_undefined' ], code: 'ERR' }

请帮我解决这个问题。

pinkon5k

pinkon5k1#

问题

您不是在导出函数,而是在尝试导出函数的结果(这些文件是因为您没有提供函数所需的参数)。

module.exports = {
    set : set().   // <<<---- You are executing the function
};

但你没有给它任何参数所以 id param等于 undefined .
从stacktrace:

..[ 'seats_undefined' ].. // 'seats_'+id === 'seats_'+`undefined` === 'seats_undefined'

解决方案

module.exports = {
    set : set
};

相关问题