Important:
请先阅读此文, 然后根据 LoopBack初级教程 创建一个简单的Loopback应用。
Model inheritance
</figure>
数据模型
LoopBack 的核心就是数据模型。数据模型用于描述后端的数据源,如数据库或其他RSET, SOAP等后端服务。从使用者的角度来看,LoopBack的数据模型可以是一个JS对象或者是一组REST的API。
所有LoopBack的数据模型都自带了一组REST API用于CRUD操作。
所有的数据模型最终都继承自一个基础模型对象。这个基础模型对象具有让所有继承自它的数据模型具有添加 hooks 和 数据验证 的能力。数据模型间的继承关系如左图所示。当你将数据模型连接到一个持久层的数据源时,那么这个数据模型将成为一个具备CRUD操作的已连接模型。所有LoopBack的内建的数据模型同样继承自基础模型对象。
内建的数据模型
所有的LoopBack应用程序都会自带一组内建的数据模型,例如:User, Role 和 Application等。因此开发人员无需从头定义这些模型,而可以继承自这些内建的数据模型。
自定义数据模型
你也可以为你的应用创建自定义数据模型。 当然,你的自定义模型也完全可以扩展内建的数据模型,从而复用内建的 User, Application 等模型的功能。
数据模型关系(Model relations)
LoopBack 可以让你方便地使用BelongsTo, HasMany 和 HasAndBelongsToMany 来表述数据模型间的关系。
数据模型的CRUD操作
当你将数据模型连接到一个持久层的数据源(例如数据库或外部的REST API)时,那么这个数据模型将成为一个已连接模型。已连接模型具备完整的继承自PersistedModel的CRUD操作能力。
操作 | REST | LoopBack model method (Node API)* |
对应的SQL操作 |
---|---|---|---|
Create | create()* |
INSERT | |
Read (Retrieve) | GET /modelName?filter=... | find()* |
SELECT |
Update (Modify) | updateAll()* |
UPDATE | |
Delete (Destroy) | DELETE /modelName/modelID | destroyAll()* |
DELETE |
*Methods listed are just prominent examples; other methods may provide similar functionality; for example, in addition to find()
, there are also findById()
, findOne()
, and findOrCreate()
.
业务逻辑(Application Logic)
你可以用以下三种方法为一个LoopBack应用添加业务逻辑
- 在数据模型中添加业务逻辑。在这个场景下,你可以 remote methods (即自定义的绑定到数据模型REST API上的方法), remote hooks (在调用模型的remote methods时被触发) 和 model hooks (在调用模型的CRUD操作时被触发) 上添加业务逻辑
- 在boot scripts上添加应用启动时的业务逻辑。
- 通过中间件为应用添加业务逻辑。类似于传统的Express中间件.
除了业务逻辑外,你还可以在数据被存入后端数据源前验证数据。
阶段型中间层 (Middleware phases)
当应用响应一个HTTP的REST请求时,中间层逻辑会被依次触发。因为LoopBack本身是基于Express的,所以LoopBack的中间件也类似于Express 中间件。不过,LoopBack的中间件引入的阶段 _(Phase)_的概念。通过将中间件定义在不同的阶段,开发人员可以更明确地定义中间件的触发顺序,从而避免在标准的Express中间件触发顺序的问题。
详情请参考定义中间件。
数据源和连接器(Data sources and connectors)
</figure>
LoopBack将后台的数据服务(例如:数据库,REST和SOAP API,以及其他存储服务) 统称为数据源。
数据源通过连接器直接操作数据库和其他后台服务。应用程序不会直接使用连接器,而是通过 DataSource and PersistedModel API方法来访问后台服务。
LoopBack 组件
LoopBack组件提供了额外的类似于“插件”的服务:
- Push notifications - 可以推送消息到原生移动应用。
- Storage service - 可以上传和下载文件到云储存服务(例如 Amazon, Rackspace, Openstack和Azure) 或自有服务器的文件系统。
- Third-party login - 集成了Passport,可以方便地让用户通过第三方账号登陆(例如Facebook, Google, Twitter, Github, 或者其他支持 OAuth, OAuth 2, or OpenID的服务)。
- Synchronization - 可以让原生的移动应用离线使用数据,并且在有网络环境的时候同步数据。
- OAuth 2.0 - 可以让LoopBack应用本身提供oAuth 2.0验证服务,从而方便第三方应用访问受保护的API方法。
开发工具
LoopBack 提供了两组基本的应用开发工具:
slc loopback
, 是个命令行工具用于创建和修改LoopBack应用。- StrongLoop Arc, 是个图形化工具拥有开发,部署和监控LoopBack应用。
其中 slc 命令行工具将辅助开发人员在整个开发周期中生成和修改各种应用组件
:
- 使用应用生成器 迅速生成原型应用(scaffold) -
slc loopback
. - 使用 model generator 生成数据模型及属性 -
slc loopback:model
. 如果需要在已有的模型中添加额外的属性,你也可以使用 property generator -slc loopback:property
. - 使用 data source generator 添加数据源 -
slc loopback:datasource
. - 使用 relation generator 添加模型间的关系 -
slc loopback:relation
.