温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Xquery extracting property values from .properties file
marklogic properties roxy xquery

其他 - Xquery从.properties文件中提取属性值

发布于 2020-05-14 06:36:09

我目前正在尝试从属性文件中提取属性值,但是遇到了一些问题。我无法在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发送到另一个功能。我需要从属性文件访问这些参数,现在我只是对其进行了硬编码。有什么想法吗?

谢谢

查看更多

提问者
C2H50H
被浏览
89
7,184 2020-02-27 03:47

您无法访问这样的部署属性,但是可以将它们与部署一起传递。如果您使用最新的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";

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

在Roxy Wiki上对这些所谓的Deployer Substitution进行了更详细的描述:

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