放下并修剪aerospike udf中的列表

时间:2016-01-03 11:01:35

标签: arrays node.js sorting udf aerospike

我尝试删除并修剪列表以构建分页系统

local function createMap(postId, paramDate)
 local m =  map { id = postId, date = paramDate };
 return m;
end



function get(rec, binName, from, to)

    if aerospike:exists(rec) then
        local l = rec[binName]
        if (l == nil) then
            return nil

        else
            local length = #l;
            if (length <= 10 and to <=10) then
                return l;
            elseif (to >= length) then
                local drop = list.drop(l, from); 
                return drop;
            else
                list.trim(l, to);--Remove all elements at and beyond a specified position in the List.
                list.drop(l, from); --Select all elements except the first n elements of the List
                return l;               
            end

        end
    else
    return nil;--end return empty array
    end--end else aerospike exists


end

我的列表有这样的结构:

[{"date":"2016-01-02T19:45:00.806Z", "id":"568828bc49017f16659f6978"}, {"date":"2016-01-02T19:44:56.040Z", "id":"568828b849017f16659f6977"},...]

似乎我无法修剪然后删除列表。以21个元素为例:它首先返回元素21到元素13,然后元素21返回元素4,然后元素3返回到元素1

我在node.js中的函数很容易改变'from'和'to'我将'page'从前端发送到node.js并使用这个函数:

      var skip = 9 * (page -1);
      var lastIndexToReturn = skip + 9 + 1;

所以首先请求来自和'0'和'10',然后是'9'和'19'等 通过使用list.trim和list.drop我认为我可以建立一个分页系统

1 个答案:

答案 0 :(得分:1)

VectorDrawable

我最后编写了这个函数:为了确保不会出现列表索引的错误,我得到列表的大小,我将这个大小与我要分页的部分进行比较,以确定要返回的内容:我不要不要遍历整个数组。

当然只有当记录是一个列表时它才有效  注意:确保来自客户端的第一个“from”是1,因为lua数组开始为1