首先,這是我在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