Модели
Модели являются основой 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 User, Application, and other built-in models.
Модель отношений
Вы можете выразить отношения между моделями, такими как BelongsTo, HasMany и HasAndBelongsToMany.
Модели CRUD операций
При подключении модели к постоянному источнику данных, например к базе данных, он становится подключенной моделью с полным набором CRUD операций - создание, чтение, обновление и удаление, из класса PersistedModel:
Операция | REST | LoopBack метод модели |
(Node API)* | Соответствующая SQL | |
операция</span> | ||
Создание |
[create()](http://apidocs.strongloop.com/loopback/#persistedmodel-create)<sup>*</sup> |
INSERT | ||
Чтение (извлечение) | GET /modelName?filter=… | [find()](http://apidocs.strongloop.com/loopback/#persistedmodel-find)<sup><span>*</span></sup> |
SELECT |
Обновление (модификация) |
[updateAll()](http://apidocs.strongloop.com/loopback/#persistedmodel-updateall)<sup><span>*</span></sup> |
UPDATE | ||
Удаление (разрушение) | DELETE /modelName/modelID | [destroyAll()](http://apidocs.strongloop.com/loopback/#persistedmodel-destroyall)<sup><span>*</span></sup> |
DELETE |
- Перечисленные методы являются лишь наглядными примерами; другие методы могут предоставить аналогичную функциональность; Например, в дополнение к find(), есть также findById (), findOne (), и findOrCreate ()
Логика приложения
Вы можете добавить пользовательскую логику приложения несколькими способами. Вы можете:
- Добавить логику приложения для моделей с помощью дистанционных методов (пользовательские REST endpoints), дистанционных привязок, которые срабатывают по remote методам, и model hooks которая срабатывает по модели CRUD методов.
- Добавить загрузочные скрипты, которые будут запускаться при запуске приложения.
- Define custom middleware, similar to Express middleware.
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 промежуточными функциями.
См. Определение промежуточных функций для получение подробной информации.
Источники данных и коннекторы
</div>
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
проведет вас через весь процесс разработки приложений с помощью интерактивных подсказок:
- Начните с генератора приложений для создания и генерации базовой структуры приложения:
slc loopback
. - Добавьте модели (и свойства модели) используя генератор моделей:
slc loopback:model
. Если вам нужно добавить свойства к существующим моделям, используйте генератор свойств,slc loopback:property
. - Добавьте источники данных используя генератор источников данных,
slc loopback:datasource
. - Добавьте связи между моделями с помощью генератора связей,
slc loopback:relation
.