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