在 MLCP 摄取到 MarkLogic 期间使用转换模块

Using Transform Module during MLCP Ingestion to MarkLogic

我在通过 MLCP 摄取文档时尝试实施信封模式

我的转换模块是这样的:

function envelope(content, context)
{
  var transformed ={};
  transformed.Metadata = { "Created" : "Time"};
  transformed.Source = content.value;
  content.uri = fn.concat("/transformed/",content.uri);
  content.value = transformed;
};
exports.transform = envelope;

我的 MLCP 命令是这样的

    mlcp.bat import -host localhost -port 8000 -username admin -
password admin -mode local -input_file_path D:\Marklogic\abcd.csv -input_file_ty
pe delimited_text -document_type json -transform_module /example/
mlcp-transform.sjs -transform_function transform -output_collections transformed -ge
nerate_uri true

MLCP 错误:

    18/01/31 09:00:27 WARN contentpump.TransformWriter: Failed document /D:/Marklogi
c/test.pcr-0-9
18/01/31 09:00:27 WARN contentpump.TransformWriter: TypeError: Cannot read prope
rty 'uri' of undefined
18/01/31 09:00:27 WARN contentpump.TransformWriter: TypeError: Cannot read prope
rty 'uri' of undefined

我不知道为什么它无法读取我的转换模块中的 uri。 感谢任何帮助

谢谢

MLCP 期望转换函数 return 更新后的 content 参数。尝试以下操作:

function envelope(content, context)
{
  var transformed ={};
  transformed.Metadata = { "Created" : "Time"};
  transformed.Source = content.value;
  content.uri = fn.concat("/transformed/",content.uri);
  content.value = transformed;
  return content;
};
exports.transform = envelope;

使用 -output_collections 参数提供目标集合名称。您还可以使用 -output_uri_prefix-output_uri_replace 参数为 uri 添加 /transformed/ 前缀。

您可以在此处找到有关命令行选项的文档:

http://docs.marklogic.com/guide/mlcp/import#id_23879

有关 MLCP 转换的文档可在此处找到:

http://docs.marklogic.com/guide/mlcp/import#id_82518

HTH!