【AQL教程3】AQL中的绑定参数点击此标题看全文
绑定参数允许您将查询逻辑与查询中使用的字面值分离,并安全地使用用户提供的输入作为这些占位符。
将查询文本与字面值分开是一个好习惯,因为它可以防止(恶意)注入关键字和其他集合名称到现有查询中。这种注入可能是危险的,因为它可能改变现有查询的含义。
使用绑定参数,无法改变现有查询的含义。绑定参数可以在查询中的任何位置使用字面值可以使用的地方。这使得您可以将字面值转换为一种变量,以便重复使用相同的查询进行不同的参数化。
语法
绑定参数的一般语法是@name,其中@表示这是一个值绑定参数,name是实际的参数名。它可以用于替换查询中的值。
RETURN @value
对于集合,语法略有不同,是@@coll,其中@@表示这是一个集合绑定参数,coll是参数名。
FOR doc IN @@coll
RETURN doc
不能将关键字和其他语言结构替换为绑定值,例如FOR、FILTER、IN、INBOUND或函数调用。
绑定参数的名称必须以字母a到z(大小写均可)或数字0到9的任意一个开头,后面可以跟任何字母、数字或下划线符号。
在查询代码中不能对绑定参数进行引号括起来:
FILTER u.name == "@name" // 错误的写法
FILTER u.name == @name // 正确的写法
FOR doc IN "@@collection" // 错误的写法
FOR doc IN @@collection // 正确的写法
如果

本文详细介绍了AQL中的绑定参数,强调其在防止恶意注入和提升查询安全性方面的作用。讲解了绑定参数的语法,包括一般用法、嵌套属性和集合绑定参数的使用,并提醒了参数命名规则。同时,提到了在不同环境中(如Web界面和arangosh)如何传递绑定参数。
最低0.47元/天 解锁文章
2121

被折叠的 条评论
为什么被折叠?



