Marklogic Java客户端Api中的ApplyTransferorMListener.ApplyResult?
ApplyTransferMLListener方法Marklogic Java客户端Api中的ApplyTransferorMListener.ApplyResult?,marklogic,java,Marklogic,Java,ApplyTransferMLListener方法和ApplyResult似乎有两个值(即REPLACE和IGNORE),如中所述,定义如下是用转换的结果替换每个文档,还是用每个文档作为输入运行转换,但忽略结果。 我的代码,它实际上做的是从MarkLogicDB中获取内容并应用转换模块。下面我提到了ApplyTransformListenersnippet: ServerTransform transform = new ServerTransform("rest");
和ApplyResult
似乎有两个值(即REPLACE
和IGNORE
),如中所述,定义如下是用转换的结果替换每个文档,还是用每个文档作为输入运行转换,但忽略结果。
我的代码,它实际上做的是从MarkLogicDB中获取内容并应用转换模块。下面我提到了ApplyTransformListener
snippet:
ServerTransform transform = new ServerTransform("rest");
ApplyTransformListener transformListener = new ApplyTransformListener()
.withTransform(transform)
.withApplyResult(ApplyResult.REPLACE)
我的转换模块(即rest
)如下所示
function patt(context, params, content)
{
var transformed = {};
transformed.Update= {"New" : "Element"};
transformed.Original= content;
xdmp.nodeReplace(content, transformed);
};
exports.transform = patt;
ServerTransform transform = new ServerTransform("rest");
ApplyTransformListener transformListener = new ApplyTransformListener()
.withTransform(transform)
.withApplyResult(ApplyResult.IGNORE)
通过使用上述代码,转换模块将获取内容并应用xdmp.nodeReplace(content,transformed)
我的问题:
甚至我在applyresult
中也这样应用了IGNORE
function patt(context, params, content)
{
var transformed = {};
transformed.Update= {"New" : "Element"};
transformed.Original= content;
xdmp.nodeReplace(content, transformed);
};
exports.transform = patt;
ServerTransform transform = new ServerTransform("rest");
ApplyTransformListener transformListener = new ApplyTransformListener()
.withTransform(transform)
.withApplyResult(ApplyResult.IGNORE)
它仍然在应用变换模块的变化。为什么
它必须正确地忽略转换模块的结果(即文档中的原始数据不应正确地更改)
如果我错了,请纠正我
谢谢当您致电
xdmp.nodeReplace
您正在更改文档时,我们不会阻止您这样做。IGNORE
选项适用于这样的场景,您希望控制自己的修改,甚至可能是对其他文档的修改
使用
REPLACE
转换函数将返回要替换文档注释的新文档。见此。忽略不等同于干运行。相反,withApplyResult
控制是或MarkLogic自动用转换函数返回的内容替换原始内容,还是丢弃(忽略)转换函数返回的内容;当使用“忽略”时,变换函数应用于数据库的任何更改仍然“保持不变”