从 lua 中的字典中删除对象
Removing an object from a dictionary in lua
我正在使用 aerospike 进行存储,它的 UDF 在 Lua 中。在通过 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"
}
我知道 pythonic 字典与 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)
}
});
根据提供的错误信息,您应该这样调用(通过冒号):
map:remove(rec, prod_id)
我相信你知道有什么区别。
以下效果很好!
map[key] = nil
我正在使用 aerospike 进行存储,它的 UDF 在 Lua 中。在通过 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"
}
我知道 pythonic 字典与 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)
}
});
根据提供的错误信息,您应该这样调用(通过冒号):
map:remove(rec, prod_id)
我相信你知道有什么区别。
以下效果很好!
map[key] = nil