如何查询redis hmget并获取或转换结果以将其作为对象(Node.js)

How to query redis hmget and get or convert the result to get it as object (Node.js)

提问人:eliezra236 提问时间:11/16/2023 更新时间:11/16/2023 访问量:18

问:

请考虑以下几点。

const user = {
    name: 'foo',
    email: '[email protected]',
    level: 15,
};

await ioredis.hmset('user:1', user);

const [name, email, level] = await ioredis.hmget('user:1', ['name', 'email', 'level']);

const reconstructUser = {
    name,
    email,
    level,
};

有没有办法简化这里的过程? 因为现在它“只有 3”,但它也可能是 10 个值,我需要在每个查询中重新映射,正如你所看到的,我还需要一遍又一遍地输入它们的名称,每个部分都有拼写错误的风险。hmget

如果它不是 String(例如本例中的 level),则奖励将是一种重新转换它的方法,或者如果它为 null,则给出默认值。

JavaScript 节点 .js 打字稿 redis ioredis

评论


答:

0赞 Khải Hồ Quang 11/16/2023 #1

可用于存储用户对象的键,然后遍历结果数组。Object.keyshmget

const user = {
  name: 'foo',
  email: '[email protected]',
  level: 15,
};

await ioredis.hmset('user:1', user);

const keys = Object.keys (user);

const userValue = await ioredis.hmget('user:1', keys);

let reconstructUser = {};

for (let i = 0; i < userValue.length; i++) {
  reconstructUser[keys[i]] = userValue[i];
}