如何在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恢复操作。 要实现的最重要的事情是不能return
asynchronous计算或请求的结果,但是在完成后必须恢复控制stream。 定义大量的函数可以使这种代码更容易阅读和理解。
这个例子说明了发生了什么:
process.nextTick(function() { console.log('second') }) console.log('first')
该程序将first
logging,然后是second
,因为process.nextTick()
asynchronous调用提供给它的callback函数(在事件循环的下一个回合中)。
如何开始Node.js的答案提供了很多资源,以便更好地理解node.js的asynchronous编程。