один из модулей, которые я реализую для своего мобильного приложения API, должен получать все ожидающие уведомления от, отправляя имя пользователя.
я использовал список под названием имя пользователя: уведомления для хранения всех ожидающих идентификаторов уведомлений. Например, в моем тестовом случае ['9','10',11'] является результатом после вызова
lrange username:notifications 0 -1
Итак, я написал lua-скрипт для получения lrange и для каждого результата
hgetall notification:id
И по какой-то причине lua не смог отправить таблицу, результат в nodejs в пригодном для использования состоянии. Интересно, есть ли у кого-нибудь решение для нескольких запросов hgetall и возврата их в nodejs
Вот остальная часть кода: -- @KEYS: "имя пользователя" -- @ARGV: имя пользователя
-- gets all fields from a hash as a dictionary
local hgetall = function (key)
local bulk = redis.call('HGETALL', key)
local result = {}
local nextkey
for i, v in ipairs(bulk) do
if i % 2 == 1 then
nextkey = v
else
result[nextkey] = v
end
end
end
local result = {}
local fields = redis.call('LRANGE' , ARGV[1], 0,-1)
for i, field in ipairs(fields) do
result[field] = hgetall('notification:'..field)
end
return result