【发布时间】:2015-08-10 15:21:35
【问题描述】:
我目前正在尝试正确使用 BaseX 数据库和 NodeJS 包“basex-node”。
通过编写连接到我在本地计算机上运行的 BaseX-Database-Server 的 .js 脚本,我已经能够创建一个新数据库、添加和删除单个文件并处理一些 xquery 查询.
我的问题如下:当我使用
var input = for $doc in collection(\'test_db\') where matches(document-uri($doc), \'test_db/a1.xml') return $doc;
var query = client.query(input);
query.execute(log.print);
要将我的查询插入到变量中,将其绑定到 basex-node 查询并执行它,我将得到我的文档内容作为正确的响应,正如我所期望的那样。
现在我要做的是不要将“a1.xml”作为我要查找的固定文档,而是提供一个外部变量。所以我将代码更改为以下内容:
var input = "declare variable $foo external; for $doc in collection(\'test_db\') where matches(document-uri($doc), \'test_db/$foo') return $foo";
var query = client.query(input);
query.bind("foo", "a1.xml", "", log.print);
query.execute(log.print);
所以基本上我使用$foo 作为外部变量并将“a1.xml”绑定到它(我想用它来稍后查找动态文档或特定节点,只要我知道如何使用和使用我的 .js 脚本调用参数)。
但是这样做时我收到的结果只是“结果:''”而不是文档。
我已经尝试将输入更改为:
var input = "declare variable $foo external; return $foo";
我收到“结果:'a1.xml'”,所以我猜我以正确的方式绑定了变量。
但它似乎不是这样工作的,所以我认为我在理解所有这些如何工作时犯了一个巨大的错误,或者在代码中犯了一个愚蠢的小错误。或者两者兼而有之。
【问题讨论】:
-
小提示:在 XQuery 中,可以同时使用单引号
'和双引号"来转义字符串,它们是相等的。在其他地方构建查询时,避免转义引号。
标签: javascript xml node.js variables basex