使用mysql-pro查询了表 然后返回来数据的格式是下面这样的,请问怎么才能转成正常的数组格式
[ RowDataPacket {
id: 1,
user_id: 24,
title: '一篇文章',
allow_comment: 1,
is_public: 1,
view_count: 10,
post_count: 0 },
RowDataPacket {
id: 2,
user_id: 24,
title: '华盛顿',
is_public: 1,
view_count: 8,
post_count: 0 } ]
这不就是数组了?!
@captainblue2013 前面有RowDataPacket 的
无所谓 直接按照数组的用法用就行了呀
可以
JSON.parse(JSON.stringify(obj))
但是这么做的意义在哪里呢
@wssgcg1213 是这样的 正常的情况下的确可以直接使用 但是我是使用session存储这些东西 就不行了~ 我在想是不是改用flash呢~纠结 谢谢回答~
如果字符串 先把RowDataPacket 这一串替换为空 ,剩下的就是数组了。
@doerU 啊~咋替换呢?查找替换,不知道安不安全~
@hezhongfeng 目测你这里都是这样的 “RowDataPacket” 如果在你的属性值里面没得 这样的值,应该是安全的。
@hezhongfeng 这是console.log的效果,表示那个object是一个RowDataPacket的实例,你可以看一下nodejs Console的源码,它本身就是一个纯对象的纯数组。 From Noder
@wssgcg1213 那就奇了怪了 我自己手动赋值的数组是没问题的 使用这个数组就出错了
RowDataPacket 这串字符的来历:
https://github.com/nodejs/node/blob/master/lib%2Fconsole.js
console.log方法中使用了util.format()
https://github.com/nodejs/node/blob/master/lib/util.js#L71 util.format 使用了模块作用域下的 inspect 方法 inspect 方法中 return formatValue(ctx, obj, ctx.depth); 追踪到 formatValue 函数 431行 var constructor = getConstructorOf(value); 获得了 constructor 556 行
// Add constructor name if available
if (base === '' && constructor)
braces[0] = constructor.name + ''+ braces[0];
RowDataPacket 正是这个object 的 constructor 名称
@wssgcg1213 找到问题原因了 是session的长度限制 数据太多了点 要改变这种用法了