在lua中从字典中删除一个对象

我正在使用Lua编写的aerospike UDF进行存储。在使用NodeJS和Python分别执行UDF时,我需要从传递的字典参数中删除键值对。

以下是代码片段:

function deleteProduct(rec, prod_id, isodate)
    map.remove(rec, prod_id)
    aerospike:update(rec)
    return 0
end

rec结构如下:

{
    meta.num_prod: 4
    s.10000006: {
      prod_id: "10000006"
      qty: "4"
 }

我知道Python字典与Lua映射不同,但我陷入了困境。我收到了以下错误消息:

/opt/aerospike/usr/udf/lua/update.lua:14: bad argument #1 to \'remove\' (Map expected, got userdata)

rec是以下方式中被调用的aerospike记录:

                var udf = { module:'update', funcname: 'deleteProductFromCart', args: [prod_key, isoDate]}
            sails.aerospike.execute(cart_key, udf, function(err, result) {
                if(err.code!=status.AEROSPIKE_OK){
                    console.log(err)
                    defer.resolve(false)
                }
                else{
                    defer.resolve(true)
                }
            });
点赞
用户5622901
用户5622901

根据提供的错误信息,你应该用冒号这种方式调用:

map:remove(rec, prod_id)

我相信你知道这样做的区别。

2015-11-30 21:31:21
用户5287073
用户5287073

下面的代码完全正常!

map[key] = nil
2015-12-09 12:26:58