2017-04-24 42 views
1

在我的源连接器中,由于我的要求和参数,我使用javascript来处理数据库工作。来源JavaScript中的欢乐频道地图

最终结果是存储数据。

ifxResults = ifxConn.executeCachedQuery(ifxQuery); //var is declared 

我需要在目标转换器中使用这些结果。

我试过channelMap.put("results", ifxResults);

我收到以下错误ReferenceError: "channelMap" is not defined.

我也曾尝试使用return ifxResults,但我不知道如何访问这个在目的地变压器。

回答

0

是否要通过您的频道将每一行作为单独的消息发送?如果是这样,听起来像你想在JavaScript模式下使用数据库读取器。只要返回ResultSet(如果使用executeCachedQuery,它就是一个CachedRowSet),通道将处理剩下的部分,并将每行的XML表示分配为离散消息。

如果你想在合并为一个消息的结果集发送所有行,这将有可能与数据库读者很快:MIRTH-2337

欢乐连接3.5将在下周发布,所以你可以然后利用它。但是,如果你不能等待或不想再升级你仍然可以做到这一点通过一段JavaScript读者:

var processor = new org.apache.commons.dbutils.BasicRowProcessor(); 
var results = new com.mirth.connect.donkey.util.DonkeyElement('<results/>'); 

while (ifxResults.next()) { 
    var result = results.addChildElement('result'); 
    for (var entries = processor.toMap(ifxResults).entrySet().iterator(); entries.hasNext();) { 
     var entry = entries.next(); 
     result.addChildElement(entry.getKey(), java.lang.String.valueOf(entry.getValue())); 
    } 
} 

return results.toXml();