CNode

关于格式转换

问答
Hhezhongfeng发布于10 年前最后回复10 年前12 回复11023 浏览0 收藏

使用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 } ]
查看回复

回复 (12)

C
captainblue2013#1·10 年前

这不就是数组了?!

H
hezhongfeng#2·10 年前
引用 captainblue2013这不就是数组了?!

@captainblue2013 前面有RowDataPacket 的

W
wssgcg1213#3·10 年前

无所谓 直接按照数组的用法用就行了呀

W
wssgcg1213#4·10 年前

可以

JSON.parse(JSON.stringify(obj))

但是这么做的意义在哪里呢

H
hezhongfeng#5·10 年前
引用 wssgcg1213无所谓 直接按照数组的用法用就行了呀

@wssgcg1213 是这样的 正常的情况下的确可以直接使用 但是我是使用session存储这些东西 就不行了~ 我在想是不是改用flash呢纠结 谢谢回答

D
doerU#6·10 年前

如果字符串 先把RowDataPacket 这一串替换为空 ,剩下的就是数组了。

H
hezhongfeng#7·10 年前
引用 doerU如果字符串 先把RowDataPacket 这一串替换为空 ,剩下的就是数组了。

@doerU 啊咋替换呢?查找替换,不知道安不安全

D
doerU#8·10 年前

@hezhongfeng 目测你这里都是这样的 “RowDataPacket” 如果在你的属性值里面没得 这样的值,应该是安全的。

W
wssgcg1213#9·10 年前
引用 hezhongfeng@wssgcg1213 是这样的 正常的情况下的确可以直接使用 但是我是使用session存储这些东西 就不行了 我在想是不是改用flash呢 纠结 谢谢回答

@hezhongfeng 这是console.log的效果,表示那个object是一个RowDataPacket的实例,你可以看一下nodejs Console的源码,它本身就是一个纯对象的纯数组。 From Noder

W
wssgcg1213#11·10 年前

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 名称

H
hezhongfeng#12·10 年前
引用 wssgcg1213RowDataPacket 这串字符的来历: https://github.com/nodejs/node/blob/master/lib%2Fconsole.js console.log方法...

@wssgcg1213 找到问题原因了 是session的长度限制 数据太多了点 要改变这种用法了

参与回复
登录后即可参与回复。登录