Мой вопрос заключается в том, чтобы заставить API консоли запросов MarkLogic форматировать столбец строк в даты.
Работа со строкой напрямую работает как положено:
var d = new Date("3/12/2019");
xdmp.monthNameFromDate(xs.date(d))
>>> March
Работа с оптическим API однако:
const op = require('/MarkLogic/optic');
const ind = op.fromView('schema', 'money');
//get non null dates, stored as strings, [MM-DD-YYYY]
const ind2 = ind.where(op.ne(op.col('completed date'), ""))
const testMonth = op.as('testDate', fn.formatDate(xs.date(op.col('completed date')), "[M01]-[D01]-[Y0001]"))
Возвращает следующую ошибку:
[javascript] XDMP-CAST: function bound ()() -- Invalid cast: {_expr:"¿\"completed date\"", _preplans:null, _schemaName:null, ...} cast as xs.date
Я полагаю, что это отличается от других вопросов по этой теме, поскольку, насколько я могу судить, они не касались OPTIC API и были решены путем работы только с одиночными строками. Как преобразовать строку в дату введите MarkLogic?
Мне нужно взять оптический «столбец» и преобразовать его тип в объект даты, чтобы я мог вызвать https://docs.marklogic.com/xdmp.monthNameFromDate и другие связанные с ним инструменты.
Мне не хватает чего-то очень простого в применении функций к наборам строк и выборе определенных столбцов.
Естественно, я хочу применить функцию к каждому свойству результирующего набора строк:
let formatted = resulting_rows.map(x=>Date(x['completed date'])
или что угодно. Это в основном то, что я делаю на стороне клиента, но кажется неправильным просто выбрасывать так много встроенных функций javascript и делать все это в браузере, особенно когда мне нужно создавать группы по годам и месяцам из этих представлений.
Не помогает, что некоторые ссылки о работе с объектами не работают:
https://docs.marklogic.com/map.keys