MorningSpace Lab

深入浅出LoopBack

第二幕

进入Model的世界

—— 理解LoopBack的核心概念

Speaker: 赵剑云

March, 2018

我是谁?

赵剑云,IBM工程师。拥有多年软件开发工作经验,她于2008年加入IBM,先后致力于WebSphere Portal的测试和IBM Forms的开发,2015年加入IBM Connections,从事内容存储和管理的开发。目前带领技术团队从事内容存储及其管理功能的开发。

## 我们将了解到什么? * 什么是Model? * 如何定义Model? * 如何定制Model? * 如何验证Model? * 如何为Model建立关联?
## 什么是Model?
* 一个JavaScript对象 * 代表后端数据源 * 提供Node和REST的API接口 * 可以通过添加钩子(hook)扩展业务逻辑 * 支持数据验证 * 允许继承,或与其他Model建立关联
## 如何定义Model?
* 使用model generator * 使用model discovery(用于已有的关系型数据库) * 使用instance introspection(用于存储非结构化数据的NoSQL数据库或REST APIs) * 手工定义Model
## 使用model generator # 用于生成Model $lb model # 用于为Model添加属性 $lb property
## 与Model相关的几个文件 * myModel.json,JSON定义文件 * myModel.js,扩展Model的应用逻辑 * model-config.json,配置Model并指定数据源
## 演示时间:☑︎ TaskMe
## ☑︎ 任务清单 * 查看并理解Task Model的定义 * 修改model-config.json,只为Task暴露我们所期望的REST API * 添加Note Model
## 如何定制Model?
* 修改Model定义文件,以对Model的定义进行定制 * 通过现有Model派生,以定义新的Model * 编辑Model的JavaScript文件,以对逻辑进行定制
## 演示时间:☑︎ TaskMe
## ☑︎ 任务清单 * 修改Task Model的定义,如:为Task增加state属性 * 增加SharableTask,令其派生自Task * 为Task Model增加业务逻辑,如:在持久化之前将title属性转换成大写
## 如何验证Model?
## validation方法 调用isValid()或新增Model与更新Model时触发: * validatesAbsenceOf * validatesExclusionOf * validatesFormatOf * validatesInclusionOf * validatesLengthOf * validatesNumericalityOf * validatesPresenceOf * validatesUniquenessOf * validatesDateOf
## 演示时间:☑︎ TaskMe
## ☑︎ 任务清单 * 为Task Model增加验证逻辑
## 如何为Model建立关联?
## Model的关联关系 * BelongsTo * HasOne * HasMany * HasManyThrough * HasAndBelongsToMany * Polymorphic * Embedded(embedsOne与embedsMany)
## 演示时间:☑︎ TaskMe
## ☑︎ 任务清单 * 为Task Model和Note Model建立关联
## 敬请期待 ### 下一幕精彩内容 ☻

晴耕小筑#晴耕实验室

(MorningSpace Lab)

Created by MorningSpace

github.com/morningspace/lab-loopback

morningspace.github.io