使用 redis 客户端时未发回响应

Response is not being sent back when using redis client

为什么在任何情况下(缓存命中或未命中)都没有发送回响应?我也没有收到任何错误。 我正在尝试建立一个简单的基于 redis 的项目。

import express from "express";
import axios from "axios";
let app = express();
import logger from "morgan";
import { createClient } from "redis";

const client = createClient();
await client.connect();

app.use(express.json());
app.use(logger("dev"));

app.get("/photos", async function (req, res) {
  await client.get("photos", async (err, photos) => {
    if (err) return next(err);
    if (photos !== null) return res.json(JSON.parse(photos));

    const { data } = await axios.get(
      "https://jsonplaceholder.typicode.com/photos"
    );

    await client.setEx("photos", JSON.stringify(data));
    res.json(data);
  });
});

问题在于您将回调功能与较新的 async/await 逻辑混合在一起。根据 npm-redis 文档,访问键值的方法是 await client.get()

app.get("/photos", async function (req, res) {
  const photos = await client.get("photos");
  if (photos) {
    res.json(JSON.parse(photos))
  } else {
    try {
      const { data } = await axios.get(
        "https://jsonplaceholder.typicode.com/photos"
      );

      await client.setEx("photos", JSON.stringify(data));
      res.json(data);
    } catch(error) {
      console.error(error)
      res.json({data: error})
    }
  }
});

我还在对 axios.get 的调用周围添加了一个 try/catch 块,以尝试捕获来自调用的任何错误以及 return 响应中的错误