![](/img/trans.png)
[英]Why can I not return a HTTP response from a private function in symfony?
[英]Can MarkLogic transform function return 2 document nodes OR original content+custom response node?
我们有这个用例,我们需要在加载内容期间在我们的转换代码中执行 2 个操作:
xdmp:document-filter()
并使用xdmp:document-insert
通过 function 手动插入现在,问题是可能存在二进制文档转换失败的情况,然后我们希望发生两件事:
原始文档仍然插入到数据库中
以这种形式将响应发送回 NiFi:
[ { "result": { "uri": "/test/abc.pdf", "message": "Successful ingestion", "success": true } }, { "result": { "uri": "/test/abc.pdf.xhtml", "message": "Failed: due to xyz error", "success": false } } ]
我似乎没有找到一种方法可以通过当前的 function 定义实现这一目标,即:
declare function example:transform(
$context as map:map,
$params as map:map,
$content as document-node()
) as document-node()**
如果我尝试返回原始 $content 和响应节点 - (document{$input}, document{$res})
OR (document{$input}, $res)
它不允许我这样做:
XDMP-AS: (err:XPTY0004) $service($context, $service-params, $input) -- 无效强制: (document{binary{"255044462d312e330a25e2e3cfd30a312030206f626a0a3c3c0a2f48542f4465..."-}, {text{array ""}, object-node{"result":object-node{"uri":text{"..."}, ...}}}}) as document-node()
如果有人遇到类似问题,或者可以指导是否可以根据当前 model 实现这一点,请提供任何意见。
您需要返回一个document-node()
,它只能有一个子节点。 因此,创建一个array-node()
然后将对象序列放入数组中:
document{
array-node{
$input,
$res
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.