2015-08-19 3 views
0

Это проблема, с которой я сталкивался много раз раньше. Я не могу захватить типы при загрузке данных в MarkLogic.Объект MarkLogic 8 для узла документа

Функция source.createSource ожидает:

$title as xs:string, 
    $dataset as xs:string?, 
    $content as document-node()* 

TypeOf (вход) показывает, что это объект. Поэтому мне нужно перейти с этого объекта на узел документа.

данных

{ "id": "123", 
    "something": "yes" 
} 

Ошибка

2015-08-19 09:26:35.150 Info: vriend: Status 500: JS-JAVASCRIPT: sourceId = source.createSource(title, dataset, source); -- Error running JavaScript request: TypeError: undefined is not a function

Script

/** 
* @name vriendingest 
* This REST extension 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 put(context, params, input) { 
    xdmp.log('input ' + typeof(input)); 

    var data = input.toObject(); 

    xdmp.log('data ' + typeof(data)); 
    xdmp.log(data.length); 

    testing = source.buildUri('takethisuri'); 
    title = 'test'; 
    source = data; 
    dataset = "cswifi"; 

    sourceId = source.createSource(title, dataset, source); 

    xdmp.log(sourceId); 

    response = '{success: "or something"}'; 
    context.outputTypes = ["application/xml"]; 
    context.outputStatus = [200, "OK"]; 

    return response; 
} 

// Main 
exports.PUT = put; 

ответ

1

Я думаю, что эта линия спрятанный ING вашего раннего определения из source:

source = data; 

Я рекомендую поместить var перед переменными, которые должны быть локальными для функции. Проверка кода с помощью JSHint с такими дополнительными vars, и с 'use strict'; внутри функции сообщает мне, что source переопределяется. Я не думаю, что вы хотите скрыть требование для источника-lib со значением данных.

HTH!

+0

Изменен, все те же проблемы. спасибо за совет редактора, но я никогда не нашел редактора, поддерживающего расширения MarkLogic REST. Я использую плагин MarkLogic Sublime, но он не поддерживает SJS, как кажется. – Thijs

+0

Я отправил некоторые редакционные предложения в автономном режиме и обновил ответ ... – grtjn

+0

Наконец-то заметил, что преобразование «declare namespace» мешало функции var. Еще раз спасибо. – Thijs