在 MarkLogic 8 中调用具有来自其余端点的依赖项的 xquery 库

2023-12-01

我们正在从 MarkLogic 6 升级到 8,并且在调用库模块时遇到了一些问题。我们有 xquery 库模块,可以从自定义 REST 扩展和非 REST xquery 调用。

马克逻辑公司文档表示 REST 端点可以使用通过新 /ext 端点安装的库或以旧方式安装的库(放置在模块数据库中的其他位置)。但是,当库模块使用 MarkLogic 附带的 functx 包时,我无法使交叉工作。

假设我有两个相同的库模块,其中一个通过安装/ext还有一个不是:

xquery version "1.0-ml";
module namespace test = "test/lib";
import module namespace functx = "http://www.functx.com" at "/MarkLogic/functx/functx-1.0-nodoc-2007-01.xqy";
declare function test:stuff() { 
    <foo/>
};

第一个是使用此命令安装的,以防万一:

curl --anyauth --user user:pwd -X PUT -i -d @".\\module\\testlib-ext.xqy" -H "Content-type: application/xquery" "http://host:8020/v1/ext/test/testlib-ext.xqy?perm:rest-reader=execute"

我有使用每个模块的其余端点(唯一的区别是命名空间和导入):

xquery version "1.0-ml";
module namespace te = "http://marklogic.com/rest-api/resource/test-ext-to-ext";
import module namespace test = "test/lib" at "/ext/test/testlib-ext.xqy";
declare function te:get($context as map:map, $params as map:map) as document-node()* {
    document { test:stuff() }
};

使用安装的库的一个/ext作品。使用简单放置在模块数据库中的模块的安装不会出现错误,但在非管理员用户调用时会出现错误(它在由管理员调用时有效):

RESTAPI-INVALIDREQ: (err:FOER0000) Invalid request:  reason: Extension test-ext-to-lib does not exist.

我只是使用它们全部安装/ext,但是 xquery 使用xdmp:invoke休息。这是一个不同的错误,但似乎是相同的根本问题。使用放置在模块数据库中的库调用模块是有效的。使用通过安装的库调用模块/ext失败并出现此错误:

XDMP-MODNOTFOUND: (err:XQST0059) xdmp:invoke("/test/test-module-to-ext.xqy", (), ()) -- Module C:\Program Files\MarkLogic\Modules\MarkLogic\functx\functx-1.0-nodoc-2007-01.xqy not found

如果我添加admin角色到调用用户,所有这些都有效。如果我取出 functx 导入,即使没有管理员角色,它们也可以工作。

它看起来像是权限问题,但我找不到可以修复它的角色或权限。除了管理员本身被选中之外,用户对每个复选框都具有角色。检查最后一个复选框是我发现的唯一使这项工作有效的方法,这显然不是一个可行的解决方案。

我们并不真正关心库是如何安装的,但我们不想重复代码。我们如何才能使这些导入同时适用于 REST 和非 REST xquery?


为了使权限发挥作用,主模块和依赖链中的每个库必须可由分配给用户的至少一个角色执行(其中分配包括继承和放大)。

REST API 设置rest-extension-user在其安装的模块上的角色/ext.

因此,拥有以下权限的用户rest-extension-user角色应该能够调用 REST API 安装的模块/ext.

更一般地说,任何可由rest-extension-user角色应该能够依赖于 REST API 安装的库/ext(当然,假设所有路径都是正确的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MarkLogic 8 中调用具有来自其余端点的依赖项的 xquery 库 的相关文章

随机推荐

  • 如何从 phantomjs shell 中运行 casper?

    任何人都知道是否以及如何可以从 phantomjs shell 又称为交互模式REPL 我还尝试将直接路径传递给 casper js 模块 但这也不起作用 进展 更新 Tried phantomjs injectJs C casperjs
  • AngularJS $http.post 错误意外的标记 F

    我正在尝试运行我的 http post脚本 我收到错误 我尝试四处搜索 但找不到问题的任何答案 这是我运行网页时收到的错误 XHR finished loading POST http mypage services json DownTi
  • 有没有更好或替代的方法来跳过/避免在 Java 中使用 Thread.sleep(1000) ?

    我正在测试一个重负载的视频 它加载视频并在 Thread sleep 1000 之后加载 它播放第二个视频 但是一旦我循环播放一个又一个 它就会冻结 当我删除所有这些 Thread sleep 1000 时它工作完美 没有冻结 但我需要延迟
  • Pocket PC:将控件绘制到位图

    我尝试使用 C 将控件的实例 例如面板或按钮 绘制到 Pocket PC 应用程序中的位图上 NET 控件具有漂亮的 DrawToBitmap 函数 但 NET Compact Framework 中不存在该函数 我将如何在 Pocket
  • 如何在Python中找到函数对象所需的参数?

    我有一个功能 f def f required arg optional arg None pass 我怎样才能返回一个列表required的参数名称f Using isinstance的结果inspect signature似乎不起作用
  • 是否可以在 MVC 3 中打开/关闭验证数据注释?

    我有两个单独的视图访问同一模型 当我将验证器数据注释放在模型上时 它会按照广告中的方式工作 并且如果留空或不在范围内 则会阻止提交数据 对于两个视图 但是 我有一个视图应该能够允许为属性保存空值或空值 而另一个视图需要要求输入或选择信息才能
  • jQuery 推栈

    我需要一些帮助才能理解pushStack 这里我举了一个例子 使用它和不使用它的结果是一样的http jsfiddle net Bz5n9 2 所以我想我真的不明白它是用来做什么的 Thanks 您当前正在添加到集合中 将一个新集合推送到堆
  • 在 JavaScript 中更改文本框文本

    我允许用户使用两个文本框之一来搜索数据库 一个是 ID 字段 一个是自由文本字段 顺便说一句 我正在使用 ASP NET 和 C 无论如何 我需要做的就是拥有它 这样当用户单击其中一个文本框时 另一个文本框文本就会被删除 因此另一个文本框是
  • CORE DATA objectId 不断变化

    我将一些数据导出到 XML 文件并放入远程 FTP 服务器中 我必须用唯一的属性来标识每个对象 这并不重要 但必须始终持久 gt 它永远不会改变 我不想创建唯一的属性 序列 序列等 我正在使用 objectID 但每次使用它时都会获得一个新
  • HttpResponseCache 在 Android Lollipop 中不起作用

    我一直在我的应用程序中成功使用 HttpResponseCache 但是当我的手机更新到 Lollipop 时 我意识到 HttpResponseCache 现在永远不会被 命中 总是执行网络请求 我已经确认 Lollipop 之前的 An
  • 如何在R光栅中获取网格周围的等高线?

    R中有一个栅格 如何绘制等高线around网格 不连接中心或其他任何东西 真正遵循网格的边界 具有某些值 或由某些掩码标识 以下示例显示如何获取值 0 6 的区域周围的等高线 如何执行相同操作 但线条遵循网格边界 该函数应该返回一个对象以添
  • 使用 Money gem 的表单选择设置货币

    我已经在这方面工作了好几个小时 但我无法弄清楚这一点 我愿意让用户根据他在表单中填写的价格选择相应的货币 我正在使用 Money Gem https github com RubyMoney money 所有值均已正确设置 但货币仅设置为其
  • 使用 JavaScript 重新加载页面的首选方法? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 您更喜欢哪种方式重新加载当前页面 使用按钮 1
  • 在 FlatList 上 React Native“keyboardDismissMode”

    是否有可能防止键盘在滚动时消失FlatList 使用 ScrollView 时 将属性 keyboardDismissMode 设置为 none 是解决此问题的方法 但这对我在 FlatList 中不起作用 我在一个自制组件 即 Stack
  • 如何删除由 start/end Document 方法添加的 StaxEventItemWriter 标记?

    如何删除由开始 结束文档方法添加的 StaxEventItemWriter 标记 当我生成 XML 文件时 它是默认添加的 所以请任何人告诉我如何删除默认根标签 Ex
  • dplyr 创建因子水平的合计百分比

    如何使用 dplyr 为每个州创建因子变量水平的比例 例如 我想添加一个变量来指示数据框中每个州内女性的百分比 gen data state lt rep c rep Idaho 10 rep Maine 10 2 student id l
  • size_t 和 unsigned int 之间的区别?

    我很困惑size t 我在互联网上搜索过 到处都提到了这一点size t是无符号类型 因此它只能表示非负值 我的第一个问题是 如果它只用来表示非负值 为什么我们不使用unsigned int代替size t 我的第二个问题是 是size t
  • SqlDependency.Start(connectionString) 每次都返回 false

    我设置了访问数据库的权限 use DbName GRANT SUBSCRIBE QUERY NOTIFICATIONS TO dbuser use DbName GRANT SELECT ON OBJECT schema tableName
  • w3c document.forms[0].fieldname 等效项

    我一直在使用 document forms 0 fieldname value 从表单中获取 javascript 中的值 但我想使用名称来引用该字段而不是 0 这些天以来等效的是什么
  • 在 MarkLogic 8 中调用具有来自其余端点的依赖项的 xquery 库

    我们正在从 MarkLogic 6 升级到 8 并且在调用库模块时遇到了一些问题 我们有 xquery 库模块 可以从自定义 REST 扩展和非 REST xquery 调用 马克逻辑公司文档表示 REST 端点可以使用通过新 ext 端点