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

时间:2016-01-15 19:38:19

标签: node.js marklogic

我已经非常仔细地查看了一下,但是找不到任何关于如何使用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(),或者将它传递给变量并返回该变量但没有运气。

此致

雨果

1 个答案:

答案 0 :(得分:6)

简单回答:您需要从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的异步编程。