3.3参数绑定

与其在表达式字符串中直接使用值,不如将值与表达式字符串分隔开。这是使用表达式字符串中的参数和绑定()函数将值绑定到参数。

参数有两种指定方式:匿名和命名。

参数类型

语法

例子

允许在CRUD操作

SQL字符串允许的

匿名的

吗?

“年龄> ?”

是的

命名

“时代>:时代”

是的

下面的示例演示如何使用绑定()函数在一个执行()函数。为每个命名参数提供一个参数绑定()它包含参数名称及其值。参数值对被传递到的顺序绑定()是无关紧要的。该示例假定测试模式已分配给该变量db这个收藏我的收藏存在。

// Collection.find()函数与固定值var myColl = db.getCollection('my_collection');var myRes1 = myColl。找到(= 18岁). execute ();//使用.bind()函数绑定参数var myRes2 = myColl。find('name =:param1 AND age =:param2').bind('param1','Rohit')。绑定(param2, 18) . execute ();//使用命名参数myColl。修改(' name =: param”)。设置(“年龄”,55)。bind(“参数”,“以”). execute ();//除了add() var myRes3 = myColl之外,所有的CRUD语句都可以绑定。找到(“名字:param”)。bind(“参数”,' R % ') . execute ();

在X DevAPI中不支持匿名占位符。这个限制通过使用占位符的多个方法提高了CRUD命令链中的代码清晰度。不管绑定()使用的语法变体在参数和基于参数名的占位符之间总是有明确的关联。

CRUD命令链的所有方法组成一个占位符命名空间。在下面的例子中,修改()设置()被束缚。两种方法都与占位符表达。占位符是指一个组合命名空间。两者都使用一个占位符:参数。一个单一的呼叫绑定()的名称值参数:参数用于将占位符值赋给:参数在链接的方法中

//一个绑定()每个参数var myColl = db.getCollection('亲戚');var juniors = myColl。找到('别名=“jr”). execute () .fetchAll ();for (var index in junior){myColl。修改(' name =: param”)。集(parent_name, mysqlx.expr(“:param”))。bind(“参数”,初中(指数). name) . execute ();}

不允许命名参数使用以数字开头的名称。例如,: 1个: 1是不允许的。

准备CRUD语句

而不是直接绑定和执行与绑定()执行()或者执行()也可以将CRUD操作对象存储在一个变量中以供以后执行。

这样做的好处是能够将几组变量绑定到表达式字符串中定义的参数,从而在执行大量类似操作时获得更好的性能。该示例假定测试模式已分配给该变量db这个收藏我的收藏存在。

var myColl = db.getCollection('my_collection');//只准备一个Collection.remove()操作,但不要运行它删除('name =:param1 AND age =:param2');//将参数绑定到准备好的函数和.execute() myRemove。绑定(“param1”,“莱昂”)。bind (param2, 39) . execute ();myRemove。绑定(“param1”、“约翰”)。绑定(param2, 28) . execute ();//绑定对所有CRUD语句都有效,但add() var myFind = myColl。查找('name like:param1 AND age >:param2');var myDocs = myFind。绑定(' param1 ', ' L % ')。bind('param2', 20).execute(); var MyOtherDocs = myFind.bind('param1', 'J%').bind('param2', 25).execute();