我通过“strong-soap”库在 NodeJS 中托管 Soap 服务器。我在这里遵循官方文档中给出的标准示例:strong-soap
当我立即发回回复时,它工作正常。但是,我的 Web 服务功能实现需要在发送响应之前调用 DB 来更新记录。
我的肥皂服务实现是这样的:
var myService = {
UpdateService: {
UpdatePort: {
UpdateCps: function(args) {
//return {
// StatusCode: 0,
// StatusDesc: "Update successful"
//};
utils.connectDB(function (err, connection) {
if(err){
return {
StatusCode: 1,
StatusDesc: "Error connecting to DB"
};
}
connection.execute(
queryString,
{
args
},{
autoCommit: true
}, function (err, results) {
if (err) {
utils.releaseConnection(connection);
return {
StatusCode: 1,
StatusDesc: "Error Updating Request ID"
};
}
utils.releaseConnection(connection);
return {
StatusCode: 0,
StatusDesc: "Update successful"
}
});
}
);
}
}
}
我面临的问题是我在 DB 调用(成功或错误)之后从内部函数返回的响应没有返回给 SOAP 客户端。调用内部函数后,调用流程终止。我无法将该函数设为回调(异步),因为调用者(SOAP 客户端)期待“同步”响应。我错过了什么?
如何使调用同步,以便仅在数据库更新后将响应发送回客户端?
在此先感谢您的帮助!