我在 ML 6.0-3.2 中创建了一个资源服务扩展,如下所示:
使用删除方法创建了一个名为 export-customer.xqy 的 xquery 模块(省略其他方法):
declare function expctrl:delete(
$context as map:map,
$params as map:map,
$input as document-node()?
) as document-node()? {
let $customer := map:get($params, "customer")
let $_ := exp:customer-node-delete(xs:int($customer))
return ( xdmp:set-response-code(200, "OK"), () )
};
使用以下命令安装:
curl --anyauth --user user:pass -X PUT -d@/opt/export-customer.xqy -HContent-Type:application/xquery "http://server1:8020/v1/config/resources/exportCustomer?title=exportCustomer&method=get&method=put&method=post&method=delete&get:customer=xs:string&delete:customer=xs:string"
使用以下命令调用:
curl --anyauth --user user:pass -X DELETE "http://server1:8020/v1/resources/exportCustomer?rs:customer=105"
此调用的结果如下:
<rapi:error xmlns:rapi="http://marklogic.com/rest-api"><rapi:status-code>500</rapi:status-code><rapi:status>INTERNAL ERROR</rapi:status><rapi:message-code>XDMP-TOOFEWARGS</rapi:message-code><rapi:message>XDMP-TOOFEWARGS: (err:XPST0017) xdmp:function(fn:QName("http://marklogic.com/rest-api/resource/exportCustomer", "delete"))($context, $resource-params) -- Too few args, expected 3 but got 2. See the MarkLogic server error log for further detail.</rapi:message></rapi:error>
堆栈跟踪指向 resource-model-update.xqy 模块的第 410 行:
if (empty($tx-ids))
-> then rsrcmodupd:exec-delete-impl($headers,$endpoint-params,$responder)
else
我不知道采取什么方法来尝试调试它。它还没有进入我的代码。
任何帮助将不胜感激。