节点JS存储过程字段值返回为未定义

时间:2017-04-22 21:10:43

标签: node.js

我是学习节点的新手,很抱歉有一个菜鸟问题。 我有mysql运行和存储proc返回字段。 我想将值分配给字符串变量并循环遍历每一行。 我在c#中做了很多,但我对节点上的菜鸟太过分了。

控制台中的结果是。

console.log(one)  -> 
[RowDataPacket {

CitySearchSearchEngineID: 1,

SearchURL: 'https://www.url.com' } ]

 OkPacket {

  fieldCount: 0,......
}

以上情况很好,

的console.log(one.SearchURL); - >未定义

我一直在努力解决这个问题,并且无法弄清楚为什么我无法获得价值。我尝试了一些不同的方法。如果我执行JSON.stringify,它会将行提供给字符串就好了。

任何想法都会受到赞赏。

以下代码。

var db = mysql.createConnection({
   host: 'localhost',
   user: 'root',
   password: 'secretpassword',
   database: 'DB1',
   port: 3306
 });

 db.connect(function(err){
  if(err){
    console.log('Error connecting to Db');
    return;
  }
  console.log('Connection established');
});

db.query('CALL esp_Select_SearchURLs()', function(err, rows){
  if(err) throw err;

  _.each(rows, function(one){

    console.log(one);  // returns back in console the RowPacketData
    console.log(one.SearchURL); // returns back undefined.

  });
});

2 个答案:

答案 0 :(得分:0)

由于某种原因,您的one可能是一个数组,所以请{I} {} {}}。

答案 1 :(得分:0)

基本上,OkPacket信息干扰了从阵列中获取信息。

    if(one.constructor.name != 'OkPacket') { 
       console.log(one[0].SearchURL);
     }