我正在运行一个简单的选择查询。 代码运行良好,并且返回结果集,并显示字符格式但显示"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);
}
});