如何在 node.js 中使用 marklogic 查询结果

how to use marklogic query results in node.js

我仔细地看了一圈,找不到任何关于如何使用来自 node.js...

中的 marklogic 模块的查询结果的示例

大多数示例执行 console.log() 结果,仅此而已,但如果我需要查询结果(比如在 JSON 数组中并稍后使用这些结果怎么办?

似乎我在这里遗漏了一些 node.js ascynch 东西...

Example :

var marklogic = require('marklogic');
var my = require('./my-connection.js');

var db = marklogic.createDatabaseClient(my.connInfo);
var qb = marklogic.queryBuilder;

db.documents.query(
    qb.where(qb.parsedFrom('oslo'))
).result( function(results) {
  console.log(JSON.stringify(results, null, 2));
});

// I would like to use the results here
// console.log(JSON.stringify(results, null, 2))

现在的问题是我想稍后在此脚本中使用结果对象。我曾尝试使用 .then(),或将其传递给一个变量并返回该变量,但没有成功。

此致,

雨果

简单回答:您需要从 result() 回调中继续您的业务逻辑。

更详细地说,您的目标是对异步计算或请求的结果执行某事。由于 JS 没有原生的异步功能(例如线程),回调通常用于异步恢复操作。要意识到的最重要的事情是您不能 return 异步计算或请求的结果,但必须在完成后恢复控制流。定义大量函数有助于使此类代码更易于阅读和理解。

这个例子说明了正在发生的事情:

process.nextTick(function() {
  console.log('second')
})

console.log('first')

该程序将记录 first,然后 second,因为 process.nextTick() 异步调用提供给它的回调函数(在事件循环的下一轮)。

How do I get started with Node.js 上的答案提供了大量资源,可以更好地理解使用 node.js 进行异步编程。