我在nodejs中从memcache获取数据时遇到问题。
首先,我用php在memcache中设置数据
Php代码:
$memcache = new Memcache;<br>
$memcache->connect("localhost",11211);<br>
$array = array("id"=>"1","name"=>"aaa");<br>
$memcache->set("key",$array);
在此之后我检查这个数据是否在memcache中设置并显示:
一:2:{S:2:&#34; ID&#34 ;; S:1:&#34; 1&#34 ;; S:4:&#34;名称&#34 ;; S:3 :&#34; aa a&#34 ;;}
一切似乎都没问题。现在我想在nodejs中获取这些数据:
Nodejs代码:
var memcache = require('mem');
var client = new memcache.Client(11211,'localhost');
client.connect();
client.get('key', function(err,result){
console.log(result);
});
这里我有问题......在控制台我得到了
a:2:{s:2:"id";s:1:"1";s:4:"name";s:3:"aa a";}
我的问题是 如何进入控制台名称:aaa? 我只补充说:
console.log(result['name']); => show : undefined
请帮忙
答案 0 :(得分:1)
PHP数据看起来好像是为你自动序列化。
我建议您在插入memcache之前将数组编码为JSON数据,而不是让这种情况发生,您可以使用节点轻松解码。
所以而不是
$memcache->set("key",$array);
做的:
$memcache->set("key", json_encode($array));
然后在节点中,而不是:
client.get('key', function(err,result){
console.log(result);
});
做的:
client.get('key', function(err,result){
var object = JSON.parse(result);
console.log(object);
console.log(object['name']);
});
将数据加载到JS对象中。
答案 1 :(得分:1)
尝试使用更便携的格式在系统之间共享数据。例如。 JSON。
$memcache = new Memcache;
$memcache->connect("localhost",11211);
$data = json_encode(array("id"=>"1","name"=>"aaa"));
$memcache->set("key",$data);
我希望这会在memcache中显示为
{ "id" : 1, "name": "aaa" }
然后你应该能够把它提取为JSON:
var memcache = require('mem');
var client = new memcache.Client(11211,'localhost');
client.connect();
client.get('key', function(err,result){
console.log(result);
var entry = JSON.parse(result);
console.log(entry.name);
});