在前端开发中,我们经常需要操作后端的数据库。使用 ORM(对象关系映射)是一种比较好的实现方式。而 Bookshelf.js 就是一个十分实用的 ORM 框架。它支持多种数据库,比如 PostgreSQL、MySQL 和 SQLite 等等。 除此之外,它还支持许多插件,如 bookshelf-scopes
插件,本文将介绍如何使用这个插件。
什么是 bookshelf-scopes 插件?
bookshelf-scopes
插件是 Bookshelf.js 框架的一个插件,它能够让我们定义查询的参数,简化编写 SQL 的过程。使用该插件后,我们可以通过预处理某些查询参数使得一些 SQL 操作更加快捷。
如何使用 bookshelf-scopes 插件
步骤1: 安装 bookshelf-scopes
npm install --save bookshelf-scopes
步骤2: 引入插件
const bookshelf = require('bookshelf')(knex); const bookshelfScope = require('bookshelf-scopes'); bookshelf.plugin(bookshelfScope);
步骤3: 定义查询的 scopes
我们可以通过 bookshelf.bookshelfScope
函数来定义 scoped 方法。scoped 方法有两个参数,第一个参数是查询范围的名称,第二个参数是一个在此查询范围的对象,它支持链式调用。
例如,下面我们定义了两个 scopes -- cheap
和 expensive
:
-- -------------------- ---- ------- ----- ------- - -------------------------- - ---------- ----------- ------- - -- ------ -- --- ------ ------- -- - ------ -------------------- ---- ---- -- -- -------- -- --- ---------- ------- -- - ------ -------------------- ----- ---- - - ---
步骤4: 使用 scopes
使用 scoped
方法后,可以在该查询范围中使用上述定义的 cheap
查询参数。 例如,我们可以使用如下代码查询价格小于 50 的商品:
Product .scoped({ method: ['cheap'] }) .fetchAll() .then(results => console.log(results));
输出结果为:
[ {id: 1, name: 'apple', price: 30}, {id: 2, name: 'banana', price: 40} ]
我们也可以在数据库中插入一些价格大于等于 50 的商品。
INSERT INTO products(name,price) VALUES ('orange',60),('pear',80),('peach',100);
然后使用下面的代码查询价格大于等于 50 的商品:
Product .scoped({ method: ['expensive'] }) .fetchAll() .then(results => console.log(results));
输出结果为:
[ {id: 4, name: 'orange', price: 60}, {id: 5, name: 'pear', price: 80}, {id: 6, name: 'peach', price: 100} ]
总结
bookshelf-scopes
插件可以让我们通过预处理某些查询参数使得一些 SQL 操作更加快捷。与普通 SQL 查询相比,查询参数和代码更加简洁、友好。本文介绍了如何使用 bookshelf-scopes
插件,让大家能够更好地使用 Bookshelf.js 框架来操作数据库。相信通过本文的学习,读者能够更好地利用 bookshelf-scopes
插件来简化 SQL 操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedae40b5cbfe1ea0610dfa