Javascript:如何获取RowDataPacket

我目前正在用Node-webkit开发一个桌面应用程序。 在这个过程中,我需要从本地的mySQL数据库获取一些数据。

查询工作正常,但我不知道如何访问结果。 我将它们全部存储在一个数组中,然后传递给一个函数。 在控制台中,他们看起来像这样:

RowDataPacket {user_id: 101, ActionsPerformed: 20} RowDataPacket {user_id: 102, ActionsPerformed: 110} RowDataPacket {user_id: 104, ActionsPerformed: 3} 

这里是查询结构:

 var ret = []; conn.query(SQLquery, function(err, rows, fields) { if (err) alert("..."); else { for (var i of rows) ret.push(i); } doStuffwithTheResult(ret); } 

如何在doStuffwithTheResult函数中检索这个? 价值是更重要的,但如果我能得到钥匙,这将是伟大的。

原来他们是普通的对象,你可以通过.user_id来访问它们。

最近我遇到了同样的问题,当我在express项目中使用waterline进行复杂查询时,使用SQL语句进行查询。

这是我的解决scheme:首先将返回值(RowDataPacket对象)转换为string,然后将此string转换为json对象。

以下是代码:

 //select all user (查询全部用户) find: function(req, res, next){ console.log("i am in user find list"); var sql="select * from tb_user"; req.models.tb_user.query(sql,function(err, results) { console.log('>> results: ', results ); var string=JSON.stringify(results); console.log('>> string: ', string ); var json = JSON.parse(string); console.log('>> json: ', json); console.log('>> user.name: ', json[0].name); req.list = json; next(); }); } 

以下是控制台:

  >> results: [ RowDataPacket { user_id: '2fc48bd0-a62c-11e5-9a32-a31e4e4cd6a5', name: 'wuwanyu', psw: '123', school: 'Northeastern university', major: 'Communication engineering', points: '10', datems: '1450514441486', createdAt: Sat Dec 19 2015 16:42:31 GMT+0800 (中国标准时间), updatedAt: Sat Dec 19 2015 16:42:31 GMT+0800 (中国标准时间), ID: 3, phone: 2147483647 } ] >> string: [{"user_id":"2fc48bd0-a62c-11e5-9a32-a31e4e4cd6a5","name":"wuwanyu","psw":"123","school":"Northeastern university","major":"Communication engineering","points":"10","datems":"1450514 441486","createdAt":"2015-12-19T08:42:31.000Z","updatedAt":"2015-12-19T08:42:31.000Z","ID":3,"phone":2147483647}] >> json: [ { user_id: '2fc48bd0-a62c-11e5-9a32-a31e4e4cd6a5', name: 'wuwanyu', psw: '123', school: 'Northeastern university', major: 'Communication engineering', points: '10', datems: '1450514441486', createdAt: '2015-12-19T08:42:31.000Z', updatedAt: '2015-12-19T08:42:31.000Z', ID: 3, phone: 2147483647 } ] >> user.name: wuwanyu 

你尝试没有rowdatapacket给出JSON的代码:

 var ret = []; conn.query(SQLquery, function(err, rows, fields) { if (err) alert("..."); else { ret = JSON.stringify(rows); } doStuffwithTheResult(ret); } 

您可以通过Object.assign(target,… sources)将对象的所有可枚举属性复制到新的对象中:

 trivial_object = Object.assign({}, non_trivial_object); 

所以在你的情况下,它应该足以改变

 ret.push(i); 

 ret.push(Object.assign({}, i));