当你使用 Sails.js 构建 web 应用时,你会经常使用 PostgreSQL 数据库。在很多情况下,你需要使用特定的查询语句从数据库中查询数据。这时候, sails-postgresql
是你的好伙伴。
本文将向你介绍另一个 npm 包 sails-postgresql-prepquery
,它是在 sails-postgresql
的基础上开发的,能够方便地构建和执行参数化查询。本教程分为以下几个部分:
- 安装和引用
- 基本参数化查询
- 支持事务
- 支持命名占位符
- 总结
1. 安装和引用
npm install sails-postgresql-prepquery --save
来安装这个包。在 Sails.js 中的 config/datastores.js
文件中配置数据库连接信息,即在 sails-postgresql
的基础上添加 client
属性(默认为 pg
)和 prepQuery
属性,引入该包:
-- -------------------- ---- ------- -------------- - - -------- - -------- ------------------- ---- --------------------------------------------------------- ------- ----- ---------- ------------------------------------- -- --
2. 基本参数化查询
prepQuery
的主要用途是构建和执行参数化查询。它使查询更加安全和可读。参数化查询分为两种类型:一种是问号占位符类型的查询,另一种是命名占位符类型的查询。
在使用此 npm 包之前,查询通常直接在代码中写死。例如,下面是一段查询字符串:
SELECT * FROM users WHERE id = 1 AND name = 'Alice'
当使用预处理语句时,查询中的值将由占位符(?或 :name)表示。在执行预处理查询时,可以将值插入这些占位符中。
下面是一个使用问号占位符类型的查询示例:
var query = { sql: 'SELECT * FROM users WHERE id = ? AND name = ?', bindings: [1, 'Alice'] }; sails.getDatastore().sendNativeQuery(prepQuery(query), function(err, result) { // ... });
同样的查询,使用命名占位符类型的查询,如下示例:
-- -------------------- ---- ------- --- ----- - - ---- ------- - ---- ----- ----- -- - --- --- ---- - ------- --------- - --- -- ----- ------- - -- ------------------------------------------------------ ------------- ------- - -- --- ---
3. 支持事务
预处理语句通常在事务执行中使用。事务是一系列 SQL 查询语句,要么全部成功,要么全部失败。
在 Sails.js 中,你可以使用 async 库来处理事务。下面是一个使用预处理语句的事务的示例:
-- -------------------- ---- ------- --- ----- - ----------------- ----------------- -------- ------------------------ - ----------------------------------------------- -- -------- -------------------- --------- - ------------------------------ -- -------- ---------------- --------- - --- ----- - - ---- ------- ---- ----- --- ---- - ------ ----- - -------- --------- - ----- -------- ------ ------------------- - -- ------------------------------------ ------------- ------- - -- ----- - ------ -------------- - -------------- ---- --- -- -------- --------------------- --------- - ------------------------------- - -- -------- --------- - -- ----- - -- ------ ----- - -- --- ----- ---
4. 支持命名占位符
命名占位符是在参数化查询中命名参数可以提高代码的可读性和可维护性。声明参数名称比记住参数的相对位置要容易得多。以下是一个支持命名占位符的查询示例:
-- -------------------- ---- ------- --- ----- - - ---- ------- - ---- ----- ----- -- - --- --- ---- - ------- --------- - ----- -------- --- - - -- ------------------------------------------------------ ------------- ------- - -- --- ---
5. 总结
本文介绍了 npm 包 sails-postgresql-prepquery
的使用方法,使预处理语句在 Sails.js 中易于构建和执行。它使用参数化查询更安全和可读,支持事务和命名占位符,给予更多选择和自由度。
希望本文能对你在使用 Sails.js 和 PostgreSQL 数据库时有所帮助,加速你的开发进程。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055fc881e8991b448dd472