Page Contents
Page Contents

Модели

Модели являются основой LoopBack, и представляют собой серверные источники данных, такие как базы данных или других back end сервисов (REST, SOAP, и так далее). Модели LoopBack являются JavaScript объектами, которые объединяют  Node и REST APIs.

**Ключевая  значительная особенность LoopBack заключается в том, что когда вы определяете модель, она автоматически сопоставляется с предопределенным REST API с полным набором CRUD операций:  создание, чтение, обновление, и удаление.**

Базовая модель объекта имеет методы для добавления привязки и для валидации данных. Другая модель объектов - все “наследовать от” него. Модели имеют иерархию наследования, как показано на рисунке справа: при подключении модели к постоянному источнику данных она становится подключенной моделью с CRUD операциями; Встроенные модели наследуются от  базовых моделей LoopBack .

Встроенные модели

Каждый LoopBack приложение имеет набор предопределенных встроенных моделей, таких как пользователь, роль и приложение, поэтому вам не придется создавать эти общие модели с нуля.

Пользовательские  модели

Вы можете определить свои собственные модели специфичные для вашего приложения. You can make your custom models extend built-in models to build on the predefined functionality of UserApplication, and other built-in models.  

Модель отношений

Вы можете выразить отношения между моделями, такими как BelongsTo, HasMany и HasAndBelongsToMany.

Модели CRUD операций

При подключении модели к постоянному источнику данных, например к базе данных, он становится подключенной моделью  с полным набором CRUD операций - создание, чтение, обновление и удаление, из класса PersistedModel:

| Операция | REST | LoopBack метод модели (Node API)* | Соответствующая SQL операция | | Создание | [PUT /_modelName_](https://docs.strongloop.com/display/RU/PersistedModel+REST+API#PersistedModelRESTAPI-Createmodelinstance) [POST /_modelName_](https://docs.strongloop.com/display/RU/PersistedModel+REST+API#PersistedModelRESTAPI-Update/insertinstance) | `[create()](http://apidocs.strongloop.com/loopback/#persistedmodel-create)*` | INSERT | | Чтение (извлечение) | [GET /modelName?filter=...](https://docs.strongloop.com/display/RU/PersistedModel+REST+API#PersistedModelRESTAPI-Findmatchinginstances) | `[find()](http://apidocs.strongloop.com/loopback/#persistedmodel-find)*` | SELECT | | Обновление (модификация) | [POST /_modelName_](https://docs.strongloop.com/display/RU/PersistedModel+REST+API#PersistedModelRESTAPI-Update/insertinstance)  [PUT /modelName](https://docs.strongloop.com/display/RU/PersistedModel+REST+API#PersistedModelRESTAPI-Updatemodelinstanceattributes) | `[updateAll()](http://apidocs.strongloop.com/loopback/#persistedmodel-updateall)*` | UPDATE | | Удаление (разрушение) | [DELETE /_modelName_/_modelID_](https://docs.strongloop.com/display/RU/PersistedModel+REST+API#PersistedModelRESTAPI-Deletemodelinstance) | `[destroyAll()](http://apidocs.strongloop.com/loopback/#persistedmodel-destroyall)*` | DELETE |
  • Перечисленные методы являются лишь наглядными примерами; другие методы могут предоставить аналогичную функциональность; Например, в дополнение к find(), есть также findById (), findOne (), и findOrCreate ()

Логика приложения

Вы можете добавить пользовательскую логику приложения несколькими способами. Вы можете:

You can add code to Validate data before saving it to the model and back-end data store.

Фаза промежуточных функций

Промежуточные функции относится к функциям, которые выполняются, когда HTTP запрос делается на REST endpoints. Поскольку LoopBack основан на Express, LoopBack промежуточные функции такие же как Express промежуточные функции.  Тем не менее, в LoopBack добавляется  понятие фазы, чтобы четко определить порядок в котором вызываться эти функции. Использование фаз, помогает избежать вопросов упорядочения, которые могут возникнуть со стандартными  Express промежуточными функциями.

См.  Определение промежуточных функций для получение подробной информации.

Источники данных и коннекторы

![](attachments/5310703/6258842.png)

LoopBack обобщает backend сервисы такие как базы данных,  REST APIs, SOAP веб сервисы и сервисы хранения данных, как источники данных.

Источники данных обращаются к коннекторам, которые в свою очередь взаимодействуют с базами данных или другими back-end сервисами. Приложения не используют коннекторы напрямую, а взаимодействуют с источниками данных  используя  DataSource и PersistedModel APIs.

LoopBack компоненты

LoopBack компоненты обеспечивают  дополнительную “plug-in” функциональность:

  • Push уведомления -  обеспечивают передачу информации на мобильные приложения для мгновенного их отображения в виде  ”значка,” оповещения, или всплывающего сообщения на мобильном устройстве.
  • Сервис хранения - позволяет загружать и скачивать файлы с помощью облачных систем хранения данных (Amazon, Rackspace, OpenStack и Azure), а так же файловой системы сервера.
  • Login от сторонних производителей - интегрирует Passport и позволяет пользователям входить (и связывать аккаунты) используя учетные данные сторонних производителей: Facebook, Google, Twitter, Github, или любой системы которая поддерживает OAuth, OAuth 2, или OpenID.
  • Синхронизация  - позволяет обильному приложению работать в автономном режиме и затем синхронизировать все данные с сервером, когда оно снова присоединится к сети.
  • OAuth 2.0 - позволяет Loopback приложениям действовать как OAuth 2.0 провайдеры, для аутентификации и авторизации клиентских приложений и пользователей, через защищенные  API endpoints.

Средства разработки

LoopBack предоставляет два основных инструмента разработки приложений:

  • [slc loopback](https://docs.strongloop.com/pages/viewpage.action?pageId=5310655) -инструмент командной строки для создания и изменения Loopback приложений.
  • StrongLoop Arc - графический инструмент для разработки, развертывания и мониторинга Loopback приложений.

Инструмент командной строки slc loopback  проведет вас через весь процесс разработки приложений с помощью интерактивных подсказок:

  1. Начните с генератора приложений для создания и генерации базовой структуры приложения: slc loopback.
  2. Добавьте модели (и свойства модели) используя генератор моделей: slc loopback:model.   Если вам нужно добавить свойства к существующим моделям, используйте  генератор свойств, slc loopback:property
  3. Добавьте источники данных используя генератор источников данных, slc loopback:datasource.
  4. Добавьте связи между моделями с помощью  генератора связей, slc loopback:relation.