当我使用下面提到的代码从redshift尝试数据时,我得到以下错误:我觉得这是由于jdbc module
没有正确安装。可以
/ * * GET用户列表。 * /
var jdbc =require('jdbc');
var express = require('express');
var config = {
libpath: '../RedshiftJDBC41-1.1.6.1006.jar',
drivername: 'com.amazon.redshift.jdbc41.Driver',
url: 'jdbc:redshift://exampleCluster.abcdkcmf0ug1.us-west-2.redshift.amazonaws.com:5439/xyz',
properties: [
['user', 'XXXXX'],
['password', 'XXXXXX']
]
};
console.log(config);
var hsqldb=new jdbc(config);
hsqldb.status();
hsqldb.initialize(config, function(err, res) {
console.log("Connection opened successfully!");
if (err) {
console.log("Error during Initializing");
console.log(err);
}
});
exports.list = function(req, res){
hsqldb.open(function(err, conn) {
if (conn) {
// SELECT statements are called with executeQuery
hsqldb.executeQuery("select * from schema.table", function(err, results) {
if (err) {
console.log(err);
} else if (results) {
console.log(results);
res.type('text/plain'); // set content-type
res.send(results);
}
hsqldb.close(function(err) {
if(err) {
console.log(err);
} else {
console.log("Connection closed successfully!");
}
});
}
);
}
});
// res.send("respond with a resource");
};
错误:
C:\用户\ ABCD \ node_modules \ JDBC \ lib中\ pool.js:97 return callback(null); ^ TypeError:object不是函数 在C:\ Users \ ABCD \ node_modules \ jdbc \ lib \ pool.js:97:12 在C:\ Users \ ABCD \ node_modules \ jdbc \ node_modules \ async \ lib \ async.js:52:16 在C:\ Users \ ABCD \ node_modules \ jdbc \ node_modules \ async \ lib \ async.js:363:13 在C:\ Users \ ABCD \ node_modules \ jdbc \ node_modules \ async \ lib \ async.js:52:16 at done(C:\ Users \ ABCD \ node_modules \ jdbc \ node_modules \ async \ lib \ async.js:243:17) 在C:\ Users \ ABCD \ node_modules \ jdbc \ node_modules \ async \ lib \ async.js:44:16 在C:\ Users \ ABCD \ node_modules \ jdbc \ node_modules \ async \ lib \ async.js:360:17 在C:\ Users \ ABCD \ node_modules \ jdbc \ lib \ pool.js:90:7 在C:\ Users \ ABCD \ node_modules \ jdbc \ lib \ pool.js:28:14 在C:\ Users \ ABCD \ node_modules \ jdbc \ lib \ drivermanager.js:26:18
类似帖子:Redshift data access from node jdbc
有人可以告诉我这里出了什么问题。代码有问题吗?或者是否未正确安装模块。我觉得这是因为我没有正确安装模块,因为我在安装jdbc模块时看到了一些错误。
请告诉我在节点js中安装jdbc模块的步骤。
答案 0 :(得分:0)
自版本0.1.1发布以来,node-jdbc API已经完全重做,因此任何与旧版本的node-jdbc相关的旧文档,包括我对上面链接的问题的回答,都不再有用。
使用node-jdbc 0.1.1,连接到数据库的代码应如下所示:
var jdbc = require('jdbc');
var jinst = require('jdbc/lib/jinst');
if (!jinst.isJvmCreated()) {
jinst.addOption("-Xrs");
jinst.setupClasspath(['../RedshiftJDBC41-1.1.6.1006.jar']);
}
var config = {
drivername: 'com.amazon.redshift.jdbc41.Driver',
url: 'jdbc:redshift://exampleCluster.abcdkcmf0ug1.us-west-2.redshift.amazonaws.com:5439/xyz',
properties: {
"user": "XXXXX",
"password": "XXXXX"
}
};
var hsqldb=new JDBC(config);
hsqldb.status();
hsqldb.initialize(function(err, res) {
/* ... */
});
特别是:
jinst
对象中配置,并已移出配置。properties
现在是一个对象,而不是版本0.0.15中的2元素数组数组。initialize
方法现在只接受一个参数,即回调。它不再将配置作为构造函数中提供的参数。user
对象中指定password
和config
属性,这样可以避免使用properties
。但是,我建议避免使用它,因为它不起作用。如果您尝试使用,即使您输入的用户名和密码无效,也可能会出现错误。您获得有些难以理解的错误的原因是因为您将配置对象传递给initialize
方法,该方法只需要回调。在Node尝试“调用”之前,错误并未引起注意。配置对象好像是一个函数,当然失败了。