Удаление объекта из словаря в lua

Я использую aerospike для хранения и его UDF в Lua. При выполнении udf через NodeJS и Python мне нужно удалить пару ключ-значение из словаря, передаваемого в качестве параметра.

Ниже приведены фрагменты кода:

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

И структура записи:

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

Я понимаю, что словарь pythonic отличается от карт Lua, но я застрял с этим. Я получаю сообщение об ошибке как:

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

Запись представляет собой запись 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)
                }
            });

person Ajay Pal Singh    schedule 25.11.2015    source источник
comment
Откуда берется значение rec?   -  person hjpotter92    schedule 25.11.2015


Ответы (2)


Согласно предоставленному сообщению об ошибке, вы должны называть это так (через двоеточие):

map:remove(rec, prod_id)

Я уверен, вы знаете, в чем разница.

person marsgpl    schedule 30.11.2015
comment
Огромное спасибо! Видимо я не понял разницы! Но спасибо! - person Ajay Pal Singh; 01.12.2015

Ниже работает нормально!

 map[key] = nil 
person Ajay Pal Singh    schedule 09.12.2015