在AQL中,当执行非阻塞查询时,如果集合未找到,可以使用try-catch块来捕获异常并进行处理。以下是一个示例代码:
try {
const query = 'FOR doc IN nonexistent_collection RETURN doc';
const cursor = await db._query(query, { fullCount: true });
const result = await cursor.all();
console.log('Query result:', result);
} catch (error) {
if (error.isArangoError && error.errorNum === ARANGO_ERRORS.ERROR_ARANGO_COLLECTION_NOT_FOUND.code) {
console.error('Collection not found');
} else {
console.error('An error occurred:', error);
}
}
在上面的示例中,我们尝试从一个不存在的集合(nonexistent_collection)中返回文档。如果集合不存在,AQL查询将抛出一个ArangoError并触发catch块。
在catch块中,我们首先检查错误类型是否为ArangoError,并且错误码(errorNum)是否与集合未找到的错误码匹配。如果匹配,我们将打印出"Collection not found"的错误消息。否则,我们将打印出实际的错误消息。
请注意,上述示例中的db._query和cursor.all是ArangoDB Node.js驱动程序的示例方法,具体的实现可能因使用的驱动程序或版本而有所不同。您需要根据自己的驱动程序和环境来调整代码。