使用参数来转义数据

我们使用了where("user.name = :name", { name: "Timber" }).{name:“Timber”}代表什么? 这是我们用来阻止 SQL 注入的参数。我们可以写:where("user.name ='"+ name +"'),但是这不安全,因为有可能被 SQL 注入。安全的方法是使用这种特殊的语法:where("user.name =name",{name:"Timber"}),其中name是参数名,值在对象中指定: {name:"Timber"}

  1. .where("user.name = :name", { name: "Timber" })

是下面的简写:

  1. .where("user.name = :name")
  2. .setParameter("name", "Timber")

注意:不要在查询构建器中为不同的值使用相同的参数名称。如果多次设置则后值将会把前面的覆盖。

还可以提供一组值,并使用特殊的扩展语法将它们转换为SQL语句中的值列表:

  1. .where("user.name IN (:...names)", { names: [ "Timber", "Cristal", "Lina" ] })

该语句将生成:

  1. WHERE user.name IN ('Timber', 'Cristal', 'Lina')