Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access a RowDataPacket object

I'm currently developing a desktop application with Node-webkit. During that process I need to get some data from a local MySQL-database.

The querying works fine, but I can't figure out how to access the results. I store all of them in an array that is then passed to a function. In the console they look like this:

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

And here is the query structure:

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

How do I retrieve this in the doStuffwithTheResult function? The values are more important, but if I could get the keys as well that would be great.

like image 883
paK0 Avatar asked Jul 04 '15 14:07

paK0


People also ask

What is a RowDataPacket?

What is RowDataPacket? RowDataPacket is actually the name of the constructor function that creates an object, it would look like this new RowDataPacket(user_id, ) . You can check by accessing its name [0]. constructor.name. If the result is an array, you would have to use [0].

How do you save a connection result in a variable in node JS?

We are going to use the query function in MySQL library in node. js that will return our output as expected. Using this approach, we can save connection result in a variable in Node.


3 Answers

Turns out they are normal objects and you can access them through user_id.

RowDataPacket is actually the name of the constructor function that creates an object, it would look like this new RowDataPacket(user_id, ...). You can check by accessing its name [0].constructor.name

If the result is an array, you would have to use [0].user_id.

like image 197
paK0 Avatar answered Oct 29 '22 19:10

paK0


With Object.prototype approach, JSON.parse(JSON.stringify(rows)) returns object, extract values with Object.values()

let result = Object.values(JSON.parse(JSON.stringify(rows)));

Usage:

result.forEach((v) => console.log(v));
like image 35
FranSanchis Avatar answered Oct 29 '22 18:10

FranSanchis


I also met the same problem recently, when I use waterline in express project for complex queries ,use the SQL statement to query.

this is my solution: first transform the return value(RowDataPacket object) into string, and then convert this string into the json object.

The following is code :

//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();
    });
}

The following is console:

    >> 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
like image 30
user5545457 Avatar answered Oct 29 '22 19:10

user5545457