首页 > 解决方案 > 如何从缓存中检索值?

问题描述

我正在使用node-cache-manager来管理 Node.js 缓存。

我已成功将一个项目添加到缓存中:

import cacheManager from 'cache-manager';

const memoryCache = cacheManager.caching({store: 'memory', max: 100, ttl: 3600/*seconds*/});

memoryCache.set('testItem', { 'key': 'testValue'}, {ttl: 36000}, (err) => {
      if (err) { throw err; }
});

但是当我想从缓存中检索一个项目时,它会响应Result: [Object Object]

这是代码:

let cacheResult = await memoryCache.get('testItem');

console.log('Result: ' + { cacheResult });

标签: javascriptnode.jsexpresscaching

解决方案


啊哈!

您已将变量定义为 JSON OBJECT,因此 Javascript 将其视为 Object [Object Object]。

为避免这种情况,您必须将 JSON 对象转换为字符串您必须这样做:

memoryCache.set('testItem', JSON.stringify({ 'key': 'testValue'}), {ttl: 36000}, (err) => {
      if (err) { throw err; }
});

而当你想检索变量的内容时

let cacheResult = await JSON.parse(memoryCache.get('testItem'), true);

现场示例:

var json = JSON.stringify({"name":"John", "age":30, "city":"New York"});
var obj = JSON.parse(json, true);


console.log(obj);
console.log('Name of user: ' + obj.name)


推荐阅读