首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >源JavaScript中的欢乐channelMap

源JavaScript中的欢乐channelMap
EN

Stack Overflow用户
提问于 2017-04-25 02:27:28
回答 2查看 3.2K关注 0票数 1

在我的源连接器中,由于我的要求和参数,我使用javascript进行数据库工作。

代码语言:javascript
复制
ifxResults = ifxConn.executeCachedQuery(ifxQuery); //var is declared 

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

我已经试过channelMap.put("results", ifxResults);了。

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

我也尝试过使用return ifxResults,但我不确定如何在目标转换器中访问它。

EN

回答 2

Stack Overflow用户

发布于 2017-04-25 02:53:36

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

如果您希望将结果集中的所有行聚合到一条消息中发送,那么使用数据库读取器很快就可以做到这一点:MIRTH-2337

快乐连接3.5将于下周发布,届时你就可以充分利用它了。但是如果你不能等待或者不想升级,那么你仍然可以使用JavaScript阅读器来做到这一点:

代码语言: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();
票数 0
EN

Stack Overflow用户

发布于 2019-03-20 04:03:40

我知道这个问题有点老生常谈了,但这里有一个仅供记录的答案。

对于这个问题,我假设您使用的是JavaScript阅读器的源连接器类型,并且您正在尝试使用JavaScript阅读器设置编辑窗格中的channelMap

问题是channelMap变量在通道的这一部分不可用。它只在过滤器和转换器中可用。

可以通过使用globalChannelMap变量来实现您想要的功能,例如

代码语言:javascript
复制
globalChannelMap.put("results", ifxResults);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43595266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档