Оптический запрос Marklogic в серверном JavaScript (.sjs) не удалось получить работу - PullRequest
0 голосов
/ 30 апреля 2019

При выполнении задания Optic Query в файле .sjs происходит сбой задания.Кажется, проблема синтаксиса в файле .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' - это имя столбца.Он отлично работает в marklogic qconsole с типом запроса java-скрипта, но получает проблему в файле .sjs.

1 Ответ

0 голосов
/ 30 апреля 2019

Я не ожидаю выполнения следующего оператора, потому что выражение в правой части присваивания пытается вычислить переменную (employeeFirstName), которая не определена до тех пор, пока не произойдет присваивание:

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

Можете ли вы объяснить больше о том, что вы пытаетесь сделать, или (если это не соответствует действительному коду) предоставить действительный код?

Еще один момент - result () возвращает последовательность.По умолчанию это последовательность объектов, каждый из которых имеет имя свойства, соответствующее имени столбца.

По этой причине следующее назначение может лучше справиться с получением значения из результата:

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

В QueryConsole часто полезно возвращать результат () из запроса Optic, чтобы вы могли видеть структуру данных результата.

Наконец, основной модуль обычно заканчивает значением, а неприсваивание.

Надеюсь, что поможет,

...