2015-08-18 2 views
3

Я пытаюсь использовать функцию declareUpdate(); Я копирую/вставляю код из руководства и получаю следующее сообщение об ошибке.declareUpdate в JavaScript-вызове XQuery в MarkLogic 8

Должно быть что-то об этом, что мне не хватает. Я добавил declareUpdate из-за этой ошибки:

{error: "XDMP-UPDATEFUNCTIONFROMQUERY: xdmp.apply(create-source#3, "CS_wifi.json", "cswifi", {"getId":{}, "findSource":{}, "createSourceWithMap":{}, "buildSo...}) -- Cannot apply an update function from a query"} 

С declareUpdate я получаю это:

{ 
    "errorResponse": { 
    "statusCode": 400, 
    "status": "Bad Request", 
    "messageCode": "JS-JAVASCRIPT", 
    "message": "JS-JAVASCRIPT: declareUpdate(); -- Error running JavaScript request: Operation not allowed on the currently executing transaction with identifier declareUpdate" 
    } 
} 

/** 
* @name vriendingest 
* This REST extentsion provides SOAP service for the shipment data 
*/ 

declareUpdate(); 

var eput = require("/MarkLogic/rest-api/lib/endpoint-util.xqy"); 
var link = require("/ext/obi/lib/link-lib.xqy"); 
var object = require("/ext/obi/lib/object-service-lib.xqy", "/ext/obi/lib/object-lib.xqy"); 
var source = require("/ext/obi/lib/source-lib.xqy"); 

function post(context, params, input) { 
    try { 
     xdmp.log('title') 
     xdmp.log(params.title); 

     testing = source.buildUri('takethisuri'); 
     title = params.title; 
     dataset = "cswifi"; 
     sourceId = source.createSource(title, dataset, source); 

     xdmp.log(sourceId); 

    response = '{success: "' + testing + '"}'; 
    } 
    catch(err){ 
     response = '{error: "' + err + '"}'; 
    } 
    context.outputTypes = ["application/xml"]; 
    context.outputStatus = [200, "OK"]; 

    return response; 
} 

// Main 
exports.POST = post; 
+0

Привет, работа над нижним решением, потому что я использую функцию PUT вместо сообщения, но я все равно получаю ту же ошибку. – scriobh

+0

да для меня это сработало – Thijs

ответ

2

POST вызовы удлинению получить режим запроса по умолчанию. С помощью XQuery вы можете добавить аннотацию к функции POST, чтобы изменить ее, но аннотации к серверному JavaScript не существует. Лучше всего переключитесь на метод PUT.

HTH!

+0

Ах .. Я помню .. – Thijs

Смежные вопросы