在处理 node.js 时,我有一个名为 IoTCollection 的集合,其中包含一个文档
{id:1,传感器:12}
我需要将返回的数据存储到一个变量中
var my data = db.query('FOR sensor in IoTCollection return sensor.sensorType');
但它返回一个未决的承诺
我应该怎么做?
先感谢您
你的问题到底是什么?
arangojs 中的所有异步方法都会返回 Promise。这些承诺最终将解析为服务器响应(或者在查询的情况下:具有更多异步方法的游标对象)。如果出现错误,应使用指示问题的特定错误对象拒绝承诺。
如果承诺根本没有被解决或拒绝,那很可能是一个错误。
如果您不熟悉 Promise,我建议您先阅读David Walsh 的教程。Promise 表示函数返回时未知的函数结果(或错误)(但最终会被知道)。Promise 是去年 JavaScript 中引入的一种新语言特性,所以我建议你习惯它们。
如果你想知道为什么 arangojs 有异步方法而不是完全同步的(就像 ArangoDB 的内部 JavaScript 函数):Node.js(和浏览器)中的所有网络访问都是异步的,所以 arangojs 不能在上面提供同步 API底层异步 API。要详细了解为什么 ArangoDB 是同步的,而 Node 是异步的,我建议您查看ArangoDB Foxx 网络研讨会。