MarkLogic 8 对象到文档节点
MarkLogic 8 object to document-node
这是我以前遇到过很多次的问题。将数据加载到 MarkLogic 时,我无法掌握类型。
函数source.createSource需要:
$title as xs:string,
$dataset as xs:string?,
$content as document-node()*
typeof(input) 表明它是一个对象。所以我需要从这个对象转到文档节点。
数据
{ "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
脚本
/**
* @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;
我认为这一行隐藏了您之前对 source
的定义:
source = data;
我建议将 var
放在应该是函数局部变量的前面。使用带有此类额外变量的 JSHint 验证您的代码,并在函数内部使用 'use strict';
告诉我 source
正在重新定义。我不认为你想用 data..
的值隐藏对 source-lib 的要求
HTH!
这是我以前遇到过很多次的问题。将数据加载到 MarkLogic 时,我无法掌握类型。
函数source.createSource需要:
$title as xs:string,
$dataset as xs:string?,
$content as document-node()*
typeof(input) 表明它是一个对象。所以我需要从这个对象转到文档节点。
数据
{ "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
脚本
/**
* @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;
我认为这一行隐藏了您之前对 source
的定义:
source = data;
我建议将 var
放在应该是函数局部变量的前面。使用带有此类额外变量的 JSHint 验证您的代码,并在函数内部使用 'use strict';
告诉我 source
正在重新定义。我不认为你想用 data..
HTH!