首先,这是我在Node.js中的第一个项目之一,所以我对它很陌生。使用数据库的node-soap服务(依赖关系问题)
我有一个项目,我想让它成为一个连接到Oracle数据库的SOAP(我知道,SOAP ...向后兼容性,呵呵)接口。
所以我有一个WSDL描述这些函数是什么样子(地址和东西的验证),我有一个连接到数据库。
现在,当使用SOAP npm模块时,您需要创建一个服务器并使用允许您响应请求的服务来侦听。我有一个包含我的SOAP服务的单独文件,但此服务应对数据库执行查询以获取其结果。
我该如何去将我的数据库服务注入到我的SOAP服务中,以便每当SOAP调用完成时,它就会将它编排到我的数据库服务中正确的方法中?
这是我的代码如下所示:
databaseconnection.js
var oracledb = require('oracledb');
var dbConfig = require('../../config/development');
var setup = exports.setup = (callback) => {
oracledb.createPool (
{
user : dbConfig.user,
password : dbConfig.password,
connectString : dbConfig.connectString
},
function(err, pool)
{
if (err) { console.error(err.message); return; }
pool.getConnection (
function(err, connection)
{
if (err) {
console.error(err.message);
return callback(null);
}
return callback(connection);
}
);
}
);
};
databaseservice.js
var DatabaseService = function (connection) {
this.database = connection;
};
function doSomething(callback) {
if (!this.database) { console.log('Database not available.'); return; }
this.database.execute('SELECT * FROM HELP', function(err, result) {
callback(result);
});
};
module.exports = {
DatabaseService: DatabaseService,
doSomething: doSomething
};
soapservice.js
var myService = {
CVService: {
CVServicePort: {
countryvalidation: function (args, cb, soapHeader) {
console.log('Validating Country');
cb({
name: args
});
}
}
}
};
server.js
app.use(bodyParser.raw({type: function(){return true;}, limit: '5mb'}));
app.listen(8001, function(){
databaseconnection.setup((callback) => {
var temp = databaseservice.DatabaseService(callback);
soapservice.Init(temp);
var server = soap.listen(app, '/soapapi/*', soapservice.myService, xml);
databaseservice.doSomething((result) => {
console.log(result.rows.length, ' results.');
});
});
console.log('Server started');
});
我怎么会去加入databaseservice.doSomething()到countryvalidation肥皂方法,而不是 '名称:ARGS'?
另外:我觉得我的代码结构非常非常混乱。我试图找到一些关于如何在线构建代码的好例子,但是对于服务和数据库连接+将它们结合起来,我没有找到太多东西。对此结构的任何评论都非常受欢迎。毕竟,我在这里学习。
谢谢
迪特
谢谢。我检查了链接,并设法使相同类型的结构工作。我应该能够自己找出其他问题。非常感谢。 – syntax1993