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

我周围环顾四周,找不到任何关于如何使用node.js中的marklogic模块的查询结果的例子…

大多数的例子做了一个console.log()的结果,那就是它,但是如果我需要查询结果(比如在一个JSON数组中,稍后使用这些结果呢?

似乎我错过了一些node.js ascynch的东西在这里…

例如 :

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() ,或将其传递给一个variables,并返回该variables,但没有运气。

问候,

雨果

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

更详细地说,您的目标是对asynchronous计算或请求的结果进行处理。 由于JS没有本地的asynchronousfunction(如线程),callback通常用于asynchronous恢复操作。 要实现的最重要的事情是不能returnasynchronous计算或请求的结果,但是在完成后必须恢复控制stream。 定义大量的函数可以使这种代码更容易阅读和理解。

这个例子说明了发生了什么:

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

该程序将firstlogging,然后是second ,因为process.nextTick()asynchronous调用提供给它的callback函数(在事件循环的下一个回合中)。

如何开始Node.js的答案提供了很多资源,以便更好地理解node.js的asynchronous编程。