我在快取從 mongodb 中洗掉資料的場景中使用洗掉功能,但是如何從 redis 中洗掉特定物件的資料。我使用了 Lrem() 但它不起作用,如果你能幫助我,我將不勝感激。
const deleteComment = async (req, res) => {
let key = `Comments/${req.query.postId}`;
try {
const deleteValue = await Comment.findOneAndDelete({
_id: req.params.id,
$or: [{ writer: req.user.id }, { authorId: req.user.id }],
})
.populate("responseTo", "writer")
.populate("postId", "authorId")
.populate("writer");
const jsonData = JSON.stringify(deleteValue);
await client.lRem(key, 0, jsonData);
res
.status(200)
.json({ success: true, message: "Comment Deleted", ?tem: deleteValue });
} catch (err) {
res.status(500).json({ message: err });
}
};
uj5u.com熱心網友回復:
您是否可以控制插入 JSON 的代碼?如果是這樣,您需要確保它們生成相同的字串。LREM需要完全匹配才能作業。也就是說,您可能需要考慮不同的資料結構或資料結構的組合。
一種選擇是您可以將 JSON 存盤為String,然后List可以包含這些String的鍵。然后,當您洗掉評論時,您呼叫LREM將其從串列中洗掉,并呼叫UNLINK或DEL洗掉 JSON。List用于存盤評論的有序索引。注釋本身都存盤在String中。
如果你可以使用RedisJSON,你可以只存盤一個帶有評論陣列的 JSON 檔案。這將為您提供有序資料和資料本身,然后您可以使用JSON.DEL和 JSONPath洗掉特定評論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497622.html
標籤:javascript 表示 缓存 雷迪斯
上一篇:Expressjs所需的表單元素