我试图找到描述在javascript Foxx微服务中运行的事务中可以安全访问的限制的文档。我读过某个地方(现在无法找到),除了通过事务参数数组传递的内容之外,您无法访问任何内容,并且必须重新导入事务中使用的所有节点模块。我很好奇我可以安全地传递给事务 - 例如ArangoDB数据库对象本身(而不是重新导入它),为什么存在这些限制,以及性能影响是什么(对象编组?)。在我对单节点服务器的测试中,似乎访问外部定义的变量确实有效,所以我认为这些限制与数据库服务器/集群的更复杂配置有关。
谢谢!
答案 0 :(得分:0)
我在某处读过(现在找不到)除了通过事务参数数组传递的内容之外你无法访问任何内容
这适用于UDF(用户定义的函数),而不适用于Foxx微服务。
我相信关于Foxx的所有注意事项都在手册中:
https://docs.arangodb.com/3.3/Manual/Foxx/
特别是:
“您不应该依赖于不同请求之间的服务器端状态(数据库本身除外),因为无法确保在同一上下文中处理连续请求。”
< / LI>“因为JavaScript代码在数据库中运行......所有Foxx和ArangoDB API都是纯粹同步的,应该被视为阻塞。”