首页 > 解决方案 > nodejs teradata 在结果集中返回“nodeJava_java_math_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{}}]

标签: node.jsteradatabigdecimal

解决方案


您可以使用您知道您将使用的 JavaScript 类型重新键入返回对象的属性,使用类似Number([...]).toString()

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)
    }
}

推荐阅读