这是一个错误,补丁即将发布。这个解决方法——由存储库贡献者菲尔·巴伯(Phil Barber)提供——同时对我有用。感谢大家的及时回复!
In the meantime, the work-around is to not have the "database" property in the connection settings and to use a REST port with the correct database assigned.
这里是问题链接,供任何想要跟踪任何更新的人使用。
如果有人能够分享他们关于我在 MarkLogic 数据移动 Node.js API 中遇到的
queryAll()
函数问题的专业知识,我将不胜感激。
我尝试了一个简单的
queryAll()
示例,结果出现以下错误:
MarkLogicError:读取森林信息:无法处理带有路径的 405 状态响应。
该功能目前可以使用吗?我需要进行任何额外的配置或权限更改,或者安装任何额外的插件吗?
MarkLogic 文档引用了 queryAll() 函数,并且 GitHub 上有一个示例查询。在读取批量数据时,自定义数据服务是更优选的方法吗?
这里有一些额外的背景信息:
MarkLogic 关于“Node.js API 中的数据移动”的文档:https://docs.marklogic.com/guide/node-dev/datamovement
queryAll() 示例:https://github.com/marklogic/node-client-api/blob/master/examples/queryAll-documents.js
下面是我收到 405 状态错误的简单代码示例:
const marklogic = require("marklogic");
const connection = require("./settings").connection;
const db = marklogic.createDatabaseClient(connection);
const qb = marklogic.queryBuilder;
const ctsQb = marklogic.ctsQueryBuilder;
const query = qb.where(ctsQb.cts.directoryQuery(["/object/"]));
try {
db.documents.queryAll(query, {
onCompletion: (summary) => {
console.log(summary.urisReadSoFar+' uris were retrieved successfully.');
console.log(summary.urisFailedToBeRead+' uris failed to be retrieved.');
console.log('Time taken was '+summary.timeElapsed+' milliseconds.');
},
})
} catch (err) {
console.error("QueryAll Error: ", err);
}
const query = qb.where(ctsQb.cts.directoryQuery(["/object/"]));
db.documents.query(query).result(
(documents) => {
documents.forEach((doc) => {
console.log(doc);
});
console.log(`${documents.length} uris were retrieved successfully.`);
},
(error) => {
console.log("Error: ", error);
}
);
127.0.0.1 - admin [28/Jan/2024:17:57:48 -0500] "POST /v1/internal/forestinfo&database=my-db-dev HTTP/1.1" 405 0 - -
在查找 Node.js 函数时,我只找到了上面提到的有限内容。您能提供的任何帮助都会很棒。
您能确认一下您数据库中的森林数量吗? “queryAll”在执行查询之前查找森林。这个错误看起来更像是读取森林时的错误,而不是执行查询时的错误。
我们刚刚发布了 Node 客户端 3.3.1 版本,修复了这个错误。