我才開始探索redis。我想使用redis快取一些資料。我在檔案中設定了redis連接server.ts并從那里匯出。將其匯入我的控制器功能并嘗試使用 set 和 get,但 get 和 set 都會出現此錯誤。
TypeError: Cannot read properties of undefined (reading 'get')
//sever.js---> redis connection part
export const client = redis.createClient({
url: "redis://127.0.0.1:6379",
});
client.connect();
client.on("error", (err) => console.log("Redis Client Error", err));
const app: Application = express();
//controller
import { client } from "../server";
const allProjects = async (req: Request, res: Response): Promise<void> => {
const cachedProjects = await client.get("projects");
if (cachedProjects) {
res.status(200).json(JSON.parse(cachedProjects));
}
const projects = await Projects.find({});
if (!projects) {
res.status(400).send("No projects found");
throw new Error("No projects found");
}
await client.set("projects", JSON.stringify(projects));
res.status(200).json(projects);
};
我的 Redis 服務器正在運行,我可以使用 set/get using redis cli. 我在某處犯了錯誤,但找不到。
我正在使用 Node.js、Express.js 和 Typescript
uj5u.com熱心網友回復:
這個錯誤很可能是因為clientis undefined。這表明你的importfrom server.js沒有做你認為的那樣。這可能是因為server.js從 Node.js 的角度來看是特殊的,因為它是運行時加載的默認檔案npm start。將該代碼放在自己的檔案中可能會更好。
要對此進行測驗,請在建立連接后嘗試在server.js.get中執行并查看是否有效。如果是這樣,您已經證明您可以與 Redis 對話。剩下的就是除錯了。.set
此外,您可能需要參考Node Redis Github 存盤庫中的示例代碼。為了您的方便,我在這里添加了它:
import { createClient } from 'redis';
const client = createClient();
client.on('error', (err) => console.log('Redis Client Error', err));
await client.connect();
await client.set('key', 'value');
const value = await client.get('key');
請注意,Alexey 是對的,您需要await建立連接。您還應該在這樣做之前添加錯誤處理程式。這樣,如果建立連接失敗,您就會知道。
uj5u.com熱心網友回復:
等到客戶端連接到服務器然后匯出
//sever.js---> redis connection part
const client = await redis.createClient({
url: "redis://127.0.0.1:6379",
});
await client.connect();
client.on("error", (err) => console.log("Redis Client Error", err));
const app: Application = express();
export client
uj5u.com熱心網友回復:
我找到了解決方案。其實是我把Redis服務器連接代碼寫錯了地方。畢竟應該是路徑。然后它作業正常。
app.use("/api/v1/uploads", imageUpload);
app.use("/api/v1/forgetPassword", forgetPassword);
app.use("/api/v1/resetPassword", resetPassword);
app.use("/uploads", express.static(path.join(dirname, "/uploads")));
client.connect();
client.on("connected", ()=> console.log("Redis connected"))
client.on("error", (err) => console.log("Redis Client Error", err));
app.use(notFound);
var server = app.listen(process.env.PORT || 3001, () =>
console.log(`Listening on port ${process.env.PORT}`)
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522572.html
上一篇:FirestoreserverTimestamp()停止作業
下一篇:JS陣列,回傳具有更大值的元素
