gpt4 book ai didi

arangodb - 如何在用户定义的函数中使用 AQL 函数?

转载 作者:行者123 更新时间:2023-12-04 03:09:12 26 4
gpt4 key购买 nike

是否可以在用户定义的函数中使用标准 AQL 函数?

我试图在自定义函数中调用 IS_IN_POLYGON() 并在执行时遇到此错误:

Query: AQL: in function 'GEO::IS_IN_MULTIPOLYGON()': user function runtime error: ReferenceError: IS_IN_POLYGON is not defined at (…)

是否有任何前缀/require()/任何应该用于访问标准 AQL 函数的东西?

ArangoDB 版本:3.2.4

引擎:RocksDB

最佳答案

是的,可以在 UDF 函数内部使用 AQL 函数,包括其他 UDF。

这是一个完整的示例,使用 AQL 函数 LENGTH():

aqlfunctions.register('TEST::test', function(collection) {
'use strict';
const db = require('@arangodb').db;
const AQL_FUNCTION = db._query;
return (typeof collection == "string")
? AQL_QUERY('RETURN LENGTH(' + collection + ')').toArray()[0]
: return typeof collection;
}, false);

要使用 UDF 函数,只需按照您在 AQL 查询中使用的方式包含其命名空间(例如 ARRAY::PRODUCT)即可。

警告:UDF 必须没有副作用。他们不应该以任何方式改变数据库状态。

如果 UDF 的返回值以任何方式依赖于数据库状态(如上例),ArangoDB 文档并不完全清楚可能会出现什么复杂情况。

关于arangodb - 如何在用户定义的函数中使用 AQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46583071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com