如何使用节点js在对象中传递mysql结果?

时间:2014-10-07 02:19:49

标签: mysql node.js

有谁知道如何使用NodeJS将MySQL结果传递给JSON对象?

// my code
var mysql = require('mysql');
var records = {};

var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: ''
});

connection.query('USE MyDB');

function getRecords() {
  connection.query("select * from records where id = ?", id, function(err, result) {
    if (err) {
        return done(err);
    }

    records = result;
    return records;
  });
}

从这些代码中,我想在项目的其他操作中使用返回记录。任何人都可以帮我将MySQL结果传递给JSON对象,这样我就可以使用函数外的数据了吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

它已经是一个对象(更确切地说是一个对象数组)。

我们假设你的桌面结构是:' field1,field2,field3'

您的结果对象如下所示:

[
  { //that's result[0], and contains the values of your first result row
    field1 : row0value1,
    field2 : row0value2,
    field3 : row0value3
  },
  { //then result[1], contains the next row, etc...
    field1 : row1value1,
    field2 : row1value2,
    field3 : row1value3  
  },
   ...
]

因此,您可以将结果作为普通数组访问,并将每个字段作为result [i]

的属性

然后,您需要知道作为Node中的其他所有内容,查询将以异步方式运行。因此,您可以使用回调来获取您的价值。

为您的函数添加回调:

function getRecords(cb) {
  connection.query("select * from records where id = ?", id, function(err, result) {
    if (err) throw(err); 
    cb(result);
  });
}

然后,当您需要结果时,您可以使用:

getRecords(function(res){
  records = res;
});