LoopBack学习 之 核心概念

准备工作:
安装LTS版本的Node.js.
安装LoopBack CLI工具

npm install -g loopback-cli

英文原地址:http://loopback.io/doc/en/lb3/LoopBack-core-concepts.html

LoopBack核心概念

模型是LoopBack的核心,代表后端数据源,如数据库或其他后端服务(REST,SOAP等)。LoopBack模型是具有Node和REST API的JavaScript对象。
LoopBack的一个关键功能是当您定义模型时,它将自动附带预定义的REST API,并具有完整的创建,读取,更新和删除操作。

模型继承

在 基本模型对象对添加方法 挂钩 和验证数据。其他模型对象都“继承”它。模型具有继承层次结构,如图所示:将模型附加到持久性数据源时,它将成为 具有创建,检索,更新和删除操作的连接模型。LoopBack的内置模型从它继承。

内置型号

每个LoopBack应用程序都有一组预定义的 内置模型,如用户,角色和应用程序,因此您不必从头开始创建这些常见模型

定制机型

您可以 定义自己的 特定于您的应用程序的自定义模型。您可以使您的自定义模型 扩展内置模型, 以建立在用户, 应用程序和其他内置模型的预定义功能的基础上 。

您可以以各种方式创建LoopBack模型,具体取决于模型基于什么样的数据源。您可以创建模型:

  • 使用LoopBack模型生成器。
  • 从 使用模型发现的现有关系数据库中。然后,您可以使用LoopBack的模式/模型同步 API 将模型与数据库保持 同步。
  • 例如 NoSQL数据库或REST API中的自由格式数据的内省。

所有这三种方法都创建了一个 模型定义JSON文件,它通过LoopBack项目的common/models目录中的约定在LoopBack中定义您的模型; 例如,common/models/account.json。

您也可以使用LoopBack API以编程方式创建和自定义模型 ,也可以手动编辑 模型定义JSON文件。在大多数情况下,您不需要使用这些技术来创建模型,但您通常将使用它们来修改和定制模型。

注意:
该模型定义JSON文件包括idInjection指示环回是否会自动添加一个独特的财产 id 属性的模型。对于连接到数据库的模型,id属性对应于主键。有关详细信息,请参阅ID属性。

模型关系

你可以表达 模型之间的关系,如 BelongsTo, HasMany 和 HasAndBelongsToMany。

模型创建,检索,更新和删除操作

当将模型连接到持久数据源(如数据库)时,它将成为一个 连接的模型, 其中包含来自PersistedModel 类的一整套创建,读取,更新和删除操作 :

操作 REST LoopBack模型方法 相应的SQL操作
创建 PUT / modelName 和 POST / modelName create() INSERT
阅读(检索) GET / modelName?filter = ... find() SELECT
更新(修改) PUT / modelName updateAll() UPDATE
删除(毁灭) DELETE / modelName / modelID destroyById() DELETE

(*)列举的方法只是突出例子; 其他方法可以提供类似的功能; 例如: findById(), findOne(),和 findOrCreate()。

有关更多信息,请参阅PersistedModel API文档。

应用逻辑

您可以以多种方式添加自定义应用程序逻辑; 您可以:

  • 通过远程方法(自定义REST端点), 远程 方法触发的远程 钩子 以及由模型创建,检索,更新和删除方法触发的操作钩子将应用程序逻辑添加到模型中。
  • 添加应用程序启动时运行的引导脚本。
  • 定义自定义 中间件,类似于Express中间件。

您可以在将数据保存到模型和后端数据存储之前添加验证数据的代码。

中间件阶段

中间件 是指当HTTP请求到REST端点做出执行的功能。由于LoopBack基于 Express,LoopBack中间件与Express中间件相同 。然而,LoopBack增加了阶段的概念,以清楚地定义调用中间件的顺序。使用阶段有助于避免订购标准Express中间件可能发生的问题。

数据源和连接器

数据源和连接器模型

LoopBack将后端服务(如数据库,REST API,SOAP Web服务和存储服务)概括为 数据源。

数据源由连接器支持,然后连接器直接与数据库或其他后端服务进行通信。应用程序不直接使用连接器,而是使用DataSource 和 PersistedModel API 访问数据源 。

LoopBack组件

LoopBack组件提供额外的“插件”功能:

  • 推送通知 - 可以将信息发送到移动应用,以立即在移动设备上的“徽章”,警报或弹出式消息中显示。
  • 存储组件 - 可以向云存储提供商(Amazon,Rackspace,Openstack和Azure)以及服务器文件系统上传和下载文件。
  • 第三方登录 - 集成 Passport ,并使用来自Facebook,Google,Twitter,Github或支持OAuth,OAuth 2或OpenID的任何系统的第三方凭据启用用户登录(和帐户链接)。
  • 同步 - 使移动应用程序能够脱机运行,然后在重新连接时将数据与服务器应用程序同步。
  • OAuth 2.0 - 使LoopBack应用程序能够作为oAuth 2.0提供程序来验证和授权客户端应用程序和用户访问受保护的API端点。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容