前言
在如今的 Web 应用中,后端逻辑代码和前端代码相互依存、相互独立已经成为了现实。然而,随着云计算的发展,更多的开发者开始选择使用云端的后端服务来加速开发流程和减少运维成本,例如 Google 的 Firebase。
Firebase 为我们提供了强大的后端服务,包括实时数据库、认证、云存储等。在本文中,我们将介绍一个针对 Firebase 实时数据库进行操作的 npm 包 @component17/firebaseorm 的使用方法。
安装
在项目根目录下使用 npm 进行安装:
npm install @component17/firebaseorm
根据官方文档描述,应该用这个命令:
npm install firebase @component17/firebaseorm
不过实际上,这个依赖在 package.json 里已经清楚地写出了 firebase 依赖,建议直接用第一个命令。
初始化
在开始使用前,你需要先初始化 firebase
。
import firebase from 'firebase/app'; import 'firebase/database'; const firebaseConfig = { // Your firebase config } firebase.initializeApp(firebaseConfig);
用法
创建 model
在使用 @componet17/firebaseorm 时,首先需要定义一个 Model,以表示实时数据库中的数据结构和处理方法。Model 是使用该包的主要方式。为了更好地理解它,以下面的示例来引导你创建 model,该示例中,我们将创建一个简单的 Todo-Item 模型。
-- -------------------- ---- ------- ------ - ------ ----- - ---- -------------------------- -------- ----- -------- -- ------ ----- -------- - -------- ----- - --- -------- ----------- - --- -------- --------- - ------ -
- path:对应实时数据库中的 URL。在这个示例中,我们将所有的 Todo-Items 存储在
/todos
下。 - field:用来扩展 Firebase 中字段支持的 Model 装饰器。
基本操作: CRUD
通过@componet17/firebaseorm 所提供的 Model,你可以对数据库进行基本的 CRUD 操作。
新增记录
const newItem = new TodoItem; newItem.title = 'todo item 1'; newItem.description = 'description 1'; newItem.completed = false; await newItem.save(); console.log('新增成功');
修改记录
可以通过find
方法、或直接使用 Model 或其子类的对象来查询到要更改的记录。
-- -------------------- ---- ------- -- ---- --------- ----- -------------- - ----- ---------------------- -- -------- ----- ------- - ----- --------------- -- ---------- ----- ----------- - -- ----- -------------- - --------------------- -------------------- - --------- ------------------------ - ----- ----- ---------------------- --------------------
查询记录
查询记录这个功能在实际应用中也是经常使用的。下面以查询 NoSQL 数据库的例子来讲解一下如何使用 @componet17/firebaseorm 进行查询。
const allTodo = await TodoItem.all(); console.log(allTodo);
以上代码表示查询出 /todos
下的所有数据,返回一个该模型类型的数组。
对于在实际开发中使用的每一种 NoSQL 数据库(例如 Firebase),由于不同用户的查询条件并没有统一规定,查询数据和在表格数据库中处理查询数据不太相同。在这方面一些 NOSQL 数据库可能有自己专用的查询语句或,例如在 Firebase 实时数据库中提供了许多查询功能,而 @componet17/firebaseorm 提供了对这些功能的支持。
const allCompleteTodo = await TodoItem.where('completed', '=', true).get(); console.log(allCompleteTodo); // 所有已完成的任务
上面的代码通过where
方法过滤出所有已完成的任务。
删除记录
以下代码表示删除一条记录:
const delTodoItem = await TodoItem.find(itemId); await delTodoItem.delete(); console.log('删除成功');
进一步: Model 配置
自定义属性名称
有时候,实际数据库的字段名称和尽量保持统一的业务规则不太相同。我们的 model 所定义的属性名称会与数据库中的字段名称对应起来。下例使用 @componet17/firebaseorm 提供的名称装饰器进行属性名称和数据库字段名称的对应。
-- -------------------- ---- ------- ------ - ------ ------ ---- - ---- -------------------------- -------- ----- -------- -- ------ ----- -------- - --------------- -------- ----- - --- -------------------- -------- ----------- - --- ------------- -------- --------- - ------ -
自定义路径
在某些情况下,可能因为特定的业务需要将同一类型的不同 Model 对象分别存储在不同的路径下。可以在 Model 的装饰器里设置 path
属性。
-- -------------------- ---- ------- -------- ----- ------------ -- ------ ----- ------------ - -------- ----- - --- -------- ----------- - --- -------- --------- - ----- -
总结
通过本文的教程,你已经了解了如何使用 @componet17/firebaseorm 以及虽然很小却很有用的 Model。用它及其支持的操作语言等特性来基于 Firebase 实时数据库完成复杂的操作。希望这篇文章对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055fd081e8991b448dd5af