0

我目前正在尝试从我的属性文件中提取属性值,但遇到了一些问题。我无法在 ML 查询控制台中对此进行测试,因为那里不存在属性文件。我目前正在尝试像这样获取文件的值

let $port := #{@properties["ml.properties-name"]}

我也看过

xdmp:document-get-properties(
   $uri as xs:string,
   $property as xs:QName

但是,我相信这仅限于 .xml 文件。有没有人有办法/解决方法来访问这些值?我似乎找不到我在 Marklogic 网站上查看了一些文档的文档,但似乎无法正常工作。我之前访问的方式是在 ruby​​ 中,通过猴子补丁允许我访问那些私有字段。问题是我调用的 ruby​​ 脚本只调用一次,而我的 .xqy 文件每分钟运行一次,将 args 发送到另一个功能。我需要从属性文件中访问这些参数,现在我只是将它们硬编码进去。有什么想法吗?

谢谢

4

1 回答 1

1

您不能像那样访问部署属性,但可以将它们与部署一起传递。如果您使用最新的 Roxy 创建一个新的 REST 应用程序,您应该将其副本config.xqy添加到src/config/

https://github.com/marklogic-community/roxy/blob/master/deploy/sample/custom-config.xqy

该文件在部署到模块数据库时会被特殊处理。属性引用在那里被替换。在您的情况下,添加另一个变量,并按照@ml.xyz模式给它一个字符串值:

declare variable $c:port := "@ml.property-name";

然后,您可以导入配置库,并在您的代码中使用它。

这些所谓的 Deployer Substitutions 在 Roxy wiki 上有更详细的描述:

https://github.com/marklogic-community/roxy/wiki/Deployer-Substitutions

于 2020-02-26T12:27:53.947 回答