paK*_*aK0 46 mysql node.js node-webkit
我目前正在使用Node-webkit开发桌面应用程序.在此过程中,我需要从本地MySQL数据库中获取一些数据.
查询工作正常,但我无法弄清楚如何访问结果.我将所有这些存储在一个数组中,然后传递给一个函数.在控制台中,它们看起来像这样:
RowDataPacket {user_id: 101, ActionsPerformed: 20}
RowDataPacket {user_id: 102, ActionsPerformed: 110}
RowDataPacket {user_id: 104, ActionsPerformed: 3}
Run Code Online (Sandbox Code Playgroud)
这是查询结构:
var ret = [];
conn.query(SQLquery, function(err, rows, fields) {
if (err)
alert("...");
else {
for (var i of rows)
ret.push(i);
}
doStuffwithTheResult(ret);
}
Run Code Online (Sandbox Code Playgroud)
如何在doStuffwithTheResult函数中检索它?价值观更重要,但如果我能得到钥匙也会很棒.
paK*_*aK0 76
原来它们是普通物体,你可以通过它们访问它们user_id.
如果结果是数组,则必须使用new RowDataPacket(user_id, ...).
小智 21
我最近也遇到了同样的问题,当我在express项目中使用waterline进行复杂查询时,使用SQL语句进行查询.
这是我的解决方案:首先将返回值(RowDataPacket对象)转换为字符串,然后将此字符串转换为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();
});
}
Run Code Online (Sandbox Code Playgroud)
以下是控制台:
>> 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
Run Code Online (Sandbox Code Playgroud)
小智 12
嗨,试试这个 100% 的作品:
results=JSON.parse(JSON.stringify(results))
doStuffwithTheResult(results);
Run Code Online (Sandbox Code Playgroud)
您可以通过Object.assign(target,... sources)将对象的所有可枚举属性复制到新属性:
trivial_object = Object.assign({}, non_trivial_object);
Run Code Online (Sandbox Code Playgroud)
所以在你的场景中,它应该足以改变
ret.push(i);
Run Code Online (Sandbox Code Playgroud)
至
ret.push(Object.assign({}, i));
Run Code Online (Sandbox Code Playgroud)
您尝试使用不带 rowdatapacket 的 JSON 代码:
var ret = [];
conn.query(SQLquery, function(err, rows, fields) {
if (err)
alert("...");
else {
ret = JSON.stringify(rows);
}
doStuffwithTheResult(ret);
}
Run Code Online (Sandbox Code Playgroud)
使用Object.prototype方法,JSON.parse(JSON.stringify(rows))返回对象,使用提取值Object.values()
var resultArray = Object.values(JSON.parse(JSON.stringify(rows)))
Run Code Online (Sandbox Code Playgroud)
用法:
resultArray.forEach(function(v){ console.log(v) })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74666 次 |
| 最近记录: |