2017-01-09 421 views
1

我正在從nodejs調用一個Lua腳本。我想傳遞一個數組作爲參數。我在解析Lua中的數組時遇到問題。Redis Lua腳本 - 如何將數組作爲參數傳遞給nodejs中的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 Error running script (call to f_b263a24560e4252cf018189a4c46c40ce7d1b21a): @user_script:1: user_script:1: bad argument #1 to 'ipairs' (table expected, got string)

+0

'ARGV [1]'假設是什麼值?它如何獲得它的價值?例如。它是一個包含逗號分隔的演員列表的字符串嗎? – greatwolf

+0

根據https://redis.io/commands/eval,您應該使用'client.value(script,2,...' – greatwolf

+0

@greatwolf,ARGV [1])調用'ARGV'或'KEYS'例如['keyv1','keyv2'] –

回答

0

你可以這樣做只是通過ARGV

local actorlist = ARGV 

for i, k in ipairs(actorlist) do 

和傳遞參數在這樣的控制檯中:

eval "_script_" 0 arg1 arg2 argN