javascript - Redis:通过索引从JSON数组中获取元素

标签 javascript json redis

我使用的软件包是redis。我使用以下命令在 Redis 中存储 JSON 数组:

await redisClient.json.set('car.volume.tire', '$', []);
await redisClient.json.arrAppend('car.volume.tire', '$', { hello: 'there' });

但是当我想通过索引检索元素时,我收到 null:

await redisClient.json.get(`car.volume.tire[0]`);

但是,以下命令返回完整的 JSON 数组:

await redisClient.json.get(`car.volume.tire`);

我做错了什么?

最佳答案

尝试:

await redisClient.json.get('car.volume.tire', { path: ['[0]'] });

或者您可以按照 Guy Royse 的建议将 path 作为字符串传递:

await redisClient.json.get('car.volume.tire', { path: '[0]' });

参见:"Retrieving JSON Documents from Redis"


完整示例

import dotenv from "dotenv";
import { createClient } from "redis";

dotenv.config();

const { REDIS_HOST, REDIS_PORT } = process.env;

const redisClient = createClient({
  socket: {
    host: REDIS_HOST,
    port: REDIS_PORT,
  },
});

redisClient.on("error", (err) => console.log("Redis Server Error", err));

await redisClient.connect();

await redisClient.json.set("car.volume.tire", "$", []);
await redisClient.json.arrAppend("car.volume.tire", "$", { hello: "there" });

const found = await redisClient.json.get("car.volume.tire", { path: "[0]" });

console.log(found); // { hello: 'there' }

redisClient.disconnect();

关于javascript - Redis:通过索引从JSON数组中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76476302/

相关文章:

java - JqG​​rid 不从 JSON 加载数据

json - 合并 mongodb 上的两个集合

redis - 我想将 redis 用作 lru 缓存,我可以按 db 来做还是需要新的 redis 实例?

php - 无法找到软件包 php5-redis Ubuntu 14.04

python - pandas data frame的每个元素的值如何存储在redis中

javascript - 主干模型同步状态

javascript - 这个 javascript 响应函数有什么作用?

javascript - 将音频从 mongodb 传递到音频标签

javascript - 是否可以使用 asp.net 或任何客户端技术访问客户端硬盘

javascript - 在 JavaScript 中执行 pg_query 时 PHP 数组中出现 JSON 编码错误