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{}}]

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

引用 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);
}
});

最新更新