Не удалось получить задание Marklogic Optic Query в серверном JavaScript (.sjs)

Мне не удалось выполнить задание при запуске 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 script, но возникает проблема в файле .sjs.


person Abhi    schedule 30.04.2019    source источник


Ответы (1)


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

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

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

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

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

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

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

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

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

person ehennum    schedule 30.04.2019
comment
Спасибо @ehennum за вашу помощь. Теперь все работает нормально. Не удалось найти схему "пример". Еще раз спасибо. - person Abhi; 02.05.2019