在Marklogic中的REST服务中使用xdmp:eval

时间:2014-10-16 11:27:39

标签: rest xquery marklogic

我使用以下REST服务将文档(从DB Ingestion)插入为此服务配置的Rest DB。我正在使用POST方法并在表单数据中发送参数。

网址:http://{hostname}:8010/v1/addDocument

问题是从摄取数据库中挑选的xml($DirectoryListing)会自动序列化为文本,因此我没有获取插入的xml。 这个代码直接在Qconsole上运行时工作正常,但是从休息服务调用它无效。

我正在使用的ML版本是7.0-2.3

请帮我解决这个问题。

let $PrefixURI := "/docs/"

let $Path := fn:concat('/processing/',$transId,'/validDocs/')
let $_ := xdmp:log(fn:concat("Path",$Path))
let $DirectoryListing as node() := 
            xdmp:invoke-function(
                    function() {
                      xdmp:directory($Path)
                    } ,
            <options xmlns="xdmp:eval">
              <database>{xdmp:database("Ingestion")}</database>
            </options>
        )


let $logs := 
element docsUris {
    for $FileEntry in $DirectoryListing
        let $Filename := functx:substring-after-last(xdmp:node-uri($FileEntry),'/')
        let $docUri := fn:concat($PrefixURI, $Filename)
        let $_ := xdmp:log(fn:concat("uri",$docUri))
        let $contents := $FileEntry
        let $_ := xdmp:log(fn:concat("adding document",$contents))
        return 
                      (: Insert the document :)
              (dls:document-insert-and-manage(
               $docUri,
                fn:false(),
               $contents,
                "created",
                (xdmp:permission("dls-user", "read"),
                 xdmp:permission("dls-user", "update")),
                "historic"),
              xdmp:document-add-collections(
               $docUri,
                "latest"),
              xdmp:document-remove-collections(
                    $docUri,  "historic")


               )

0 个答案:

没有答案