我正在运行一个简单的选择查询。代码运行正常并返回结果集,同时显示字符格式的所有列值,但显示十进制格式列的“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{}}]
答案 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)
}
}