nodejs teradata在结果集中返回“nodeJava_java_math_BigDecimal {}”而不是十进制值?

时间:2018-05-11 18:30:49

标签: node.js teradata bigdecimal

我正在运行一个简单的选择查询。代码运行正常并返回结果集,同时显示字符格式的所有列值,但显示十进制格式列的“nodeJava_java_math_BigDecimal {}”?

var Teradata = require('node-teradata');  


var config = { 
url: 'jdbc:teradata://abc.com/database=abab', 
 username: '****',   
  password: '****',  
  driver: './jars/',  
  minPoolSize: 1,
    maxPoolSize: 100,   
    keepalive: {   
      interval: 60000,   
      query: 'SELECT 1',   
      enabled: true   
    }     
};   

var teradata = new Teradata(config);

var sql = "select name,QTY from products where id='700018'";

return teradata.read(sql)
  .then(function(response) {
    console.log(response);
  });

在控制台上打印的结果是:

[{name:'Apple Juice',QTY:nodeJava_java_math_BigDecimal{}}]

2 个答案:

答案 0 :(得分:0)

here引用CraZySacX:

  

当您取回节点java包装的对象时   (nodeJava_java_math_BigDecimal),您可以访问所有   Java API公开的同步和异步形式的功能。

     

例如,Java 7 BigDecimal API具有一个称为intValue的函数

您的情况是:

return teradata.read(sql)
  .then(function(response) {

       response[0].QTY.intValue(function(err, intVal){
           var newQTY = intVal;
           console.log(newQTY);
        }

  });

答案 1 :(得分:0)

您可以使用Number([...]).toString()之类的方法使用您知道要使用的JavaScript类型重新输入返回对象的属性。

return teradata.read(sql)
    .then(function(response) {
        return response.map(respObj => objExtractor(respObj));
});

function objExtractor(teradataObj) {
    return {
        name: teradataObj.name.toString(),
        QTY: Number(teradataObj.QTY).toFixed(0)
    }
}