gpt4 book ai didi

redis - 冰 CoffeeScript 函数中封装redis hmset

转载 作者:可可西里 更新时间:2023-11-01 11:22:26 26 4
gpt4 key购买 nike

我想封装redis hmset

exports.hmset = (name, autocb, params...)=>
await client.hmset name, params, defer(err)
throw err if err

我知道 params 是类似于 ['fooKey', 'fooValue', 'barKey', 'barValue'] 的数组。但是后来我在 name 键上的 redis 数据库中有数据:

{'0' : 'fooKey', '1' : 'fooValue', '2' : 'barKey', '3': 'barValue'}

但我希望它是:

{'fooKey' : 'fooValue', 'barKey' : 'barValue'}

我知道我必须将它们传递到 client.hmset 中,而不是像数组 ['fooKey', 'fooValue', 'barKey', 'barValue']但就像 args: 'fooKey', 'fooValue', 'barKey', 'barValue'。但是当 args 长度不同时,如何通过包装 exports.hmset 函数来传递它们呢?

最佳答案

据我了解,您正在使用 varargs调用 hmset 的约定。您使用 splat收集数组中的参数,然后将该数组作为参数传递给 node_redis——它也支持 object约定,您可以在其中传递带有键及其值的普通对象。这就是为什么您使用位置键获取 redis 散列的原因,因为如果您将 javascript 数组视为一个对象,这就是您所拥有的。

你需要做的只是在调用redis时再次输入params:

exports.hmset = (name, autocb, params...)=>
await client.hmset name, params..., defer(err)
throw err if err

现在,coffeescript 将该数组作为可变参数传递给“真实的”hmset。作为一个额外的好处,您还可以使用“params as an object”约定,这可以说更优雅。

关于redis - 冰 CoffeeScript 函数中封装redis hmset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18684918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com