Этот вопрос больше относится к дизайну REST URL, чтобы я мог пройти критерии для дат, когда мне нужно искать <или> определенную дату. Кроме того, это будет расширение REST в MarkLogic, которое будет вызывать SQL-запрос по очереди над представлением. Таким образом, критерии, переданные в параметре запроса, будут служить критерием для запроса SQL.
Вот мой документ:
{
"EmployeeID": "1234567",
"EmployeeName": "Lorem Ipsum",
"JoiningDate": "2018-07-01"
}
Ниже приведено определение шаблона:
var tde = require("/MarkLogic/tde.xqy");
var EmployeeRecordTDE = xdmp.toJSON(
{
"template": {
"context": "/",
"collections": ["EmployeeRecordCollection"],
"rows": [
{
"schemaName": "employees",
"viewName": "EmployeeRecordView",
"columns": [
{
"name": "employeeId",
"scalarType": "string",
"val": "EmployeeID"
},
{
"name": "employeeName",
"scalarType": "string",
"val": "EmployeeName",
},
{
"name": "startDate",
"scalarType": "string",
"val": "JoiningDate"
}
]
}
]
}
}
);
tde.validate(
[EmployeeRecordTDE]
);
tde.nodeDataExtract(
[fn.collection(["EmployeeRecordCollection"])],
[EmployeeRecordTDE]
);
tde.templateInsert(
"/employee/EmployeeRecordTDE.json" ,
EmployeeRecordTDE,
xdmp.defaultPermissions(),
["EmployeeRecordCollection"]
)
Я думаю о том, чтобы запросить вид сверху примерно так:
op.fromView('employees', 'EmployeeRecordView',"")
.select(['employeeId', 'employeeName', 'startDate'])
.where(op.eq(op.col('employeeId'), op.param('emplId')))
.orderBy('employeeId');
или может быть таким:
op.fromSQL("select * from EmployeeRecordView where employees.EmployeeRecordView.employeeId=12345","")
Я могу использовать Optic API через Javascript или использовать SQL внутри расширения REST, в зависимости от того, что лучше всего работает. Мне просто нужна возможность передавать параметры запроса для различных критериев SQL.
Допустим, мое расширение REST определено как
http://localhost:8040/LATEST/config/resources/employees?method=get&get:emplId=integer&get:name=string
У меня может быть REST-URL для соответствия критериям «=» и «in», например:
http://localhost:8040/LATEST/resources/employees?rs:name='John','Brad'&rs:emplId=1234567
Не знаете, как передавать параметры для сценариев поиска между и датами, которые могут работать с MarkLogic.