ArangoDB:处理遍历中的悬垂边
ArangoDB: handling dangling edges in a Traversal
我正在使用 ArangoDB 2.8 和 arangojs。
出于某些原因,我的数据中存在悬空边缘(我无法更改)。在遍历复杂的扩展器函数中,我正在寻找一个特定的文档,然后将其推送到扩展器的连接数据结构中:
var refDoc = someColl.document(obj1[someProp]);
connected.push( edge:theEdge, vertex: refDoc });
如果搜索的文档不存在,如何避免遍历扩展器被 someColl.document() 引发的错误停止?
我试过使用 Node 风格的回调,但没有成功。
我应该尝试(如何?)在服务器的模块上添加 es6-promise 或 bluebird 吗?
谢谢。
正如 Mike Williamson 已经建议的那样,try {} catch
是要走的路:
const arangodb = require('@arangodb');
try {
var refDoc = someColl.document(obj1[someProp]);
connected.push( edge:theEdge, vertex: refDoc });
}
catch (ex) {
if ((ex not instanceof ArangoError) or
(ex.errorNum !== arangodb.ERROR_ARANGO_DOCUMENT_NOT_FOUND)) {
throw(ex)
}
}
因此您可以忽略 找不到文档 错误,但继续抛出其他(可能更致命)错误。
我正在使用 ArangoDB 2.8 和 arangojs。
出于某些原因,我的数据中存在悬空边缘(我无法更改)。在遍历复杂的扩展器函数中,我正在寻找一个特定的文档,然后将其推送到扩展器的连接数据结构中:
var refDoc = someColl.document(obj1[someProp]);
connected.push( edge:theEdge, vertex: refDoc });
如果搜索的文档不存在,如何避免遍历扩展器被 someColl.document() 引发的错误停止?
我试过使用 Node 风格的回调,但没有成功。 我应该尝试(如何?)在服务器的模块上添加 es6-promise 或 bluebird 吗?
谢谢。
正如 Mike Williamson 已经建议的那样,try {} catch
是要走的路:
const arangodb = require('@arangodb');
try {
var refDoc = someColl.document(obj1[someProp]);
connected.push( edge:theEdge, vertex: refDoc });
}
catch (ex) {
if ((ex not instanceof ArangoError) or
(ex.errorNum !== arangodb.ERROR_ARANGO_DOCUMENT_NOT_FOUND)) {
throw(ex)
}
}
因此您可以忽略 找不到文档 错误,但继续抛出其他(可能更致命)错误。