【问题标题】:nodejs teradata returns "nodeJava_java_math_BigDecimal{}" instead of decimal value in the resultset?nodejs teradata 在结果集中返回“nodeJava_java_math_BigDecimal{}”而不是十进制值?
【发布时间】:2018-10-22 05:18:33
【问题描述】:

我正在运行一个简单的选择查询。代码运行良好,它返回的结果集也显示了所有字符格式的列值,但显示了十进制格式列的“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.js teradata bigdecimal


    【解决方案1】:

    引用来自here的CraZySacX:

    当你取回一个 node-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);
            }
    
      });
    

    【讨论】:

      【解决方案2】:

      您可以使用 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)
          }
      }
      

      【讨论】:

      • 请注意,我假设您的 teradata 查询 read() 返回一个数组,而 Select ... where 通常会这样做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2021-06-08
      • 1970-01-01
      • 2018-11-18
      • 2022-01-19
      • 1970-01-01
      • 2014-12-29
      相关资源
      最近更新 更多