0

在 .sjs 文件中运行 Optic Query 时作业失败。用于光学查询的 .sjs 文件中似乎存在语法问题。您能帮我提供在 .sjs 文件中运行光学查询的正确语法吗?请在下面找到代码片段。

const op = require('/MarkLogic/optic');
let k = op.fromView('example','sampleData').select(['firstName']).result();
let t = xs.string(k);
let employeeFirstName = fn.replace(EmployeeFirstName, 'John', t);

-这里'example'是模式名,sampleData是视图名,'firstName'是列名。它在具有 java 脚本查询类型的 marklogic qconsole 中工作正常,但在 .sjs 文件中出现问题。

4

1 回答 1

0

我不希望执行以下语句,因为赋值右侧的表达式试图评估一个在赋值发生之前未定义的变量 (employeeFirstName):

let employeeFirstName = fn.replace(EmployeeFirstName, 'John', t);

您能否详细说明您正在尝试做什么或(如果这不代表实际代码)提供实际代码?

还有一点——result() 返回一个序列。默认情况下,这是一个对象序列,每个对象都有一个与列名对应的属性名。

出于这个原因,以下分配可能会更好地从结果中获取值:

let t = fn.head(k)['example.sampleData.firstName'];

在 QueryConsole 中,从 Optic 查询返回 result() 通常很有帮助,因此您可以查看结果数据结构。

最后,主模块通常以值而不是赋值结束。

希望有帮助,

于 2019-04-30T15:59:49.127 回答