繁体   English   中英

Redis Lua脚本 - 如何将数组作为参数传递给nodejs中的Lua脚本?

[英]Redis Lua script - how to pass array as argument to a Lua script in nodejs?

我从nodejs调用Lua脚本。 我想传递一个数组作为参数。 我在Lua中解析该数组时遇到问题。

以下是一个例子:

var script = 'local actorlist = ARGV[1] 
if #actorlist > 0 then
for i, k in ipairs(actorlist) do
   redis.call("ZADD","key", 1, k)
end
end';

client.eval(
     script, //lua source
     0,
     ['keyv1','keyv2']
     function(err, result) {
         console.log(err+'------------'+result);
     }
    );

它给了我这个错误:

“ERR错误运行脚本(调用f_b263a24560e4252cf018189a4c46c40ce7d1b21a):@ user_script:1:user_script:1:错误参数#1到'ipairs'(表格预期,得到字符串)

您只需使用ARGV即可

local actorlist = ARGV

for i, k in ipairs(actorlist) do

并在控制台中传递参数,如下所示:

eval "_script_" 0 arg1 arg2 argN

您只能将字符串传递给Redis lua脚本。

如果需要将一组值传递给Redis lua脚本,则可以执行以下操作:

let script = `
if #ARVG > 0 then
    for i, k in ipairs(ARGV) do
       redis.call("ZADD","key", 1, k)
    end
end`;

client.eval(
     script, //lua source
     0,
     ...['keyv1','keyv2'],
     function(err, result) {
         console.log(err+'------------'+result);
     }
);

这里的关键是在调用eval时将keyv1keyv2作为单独的参数传递。 (我在这里使用es6语法)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM