2013-08-12 17:40:50 +00:00
|
|
|
##Concepts
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-27 15:18:32 +00:00
|
|
|
###SDKs
|
|
|
|
|
|
|
|
**PLACEHOLDER FOR SDK INTRO**
|
|
|
|
|
2013-08-22 02:30:49 +00:00
|
|
|
###Model
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
LoopBack is centered around models. A model is an object that
|
|
|
|
encapsulates data. A model is usually named after its
|
|
|
|
real life counterpart. Like its real life counterpart, a model has
|
|
|
|
some properties. Each property has a name, a type,
|
2013-08-26 22:03:03 +00:00
|
|
|
and other attributes. For example,
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-26 22:03:03 +00:00
|
|
|
model: Person
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-26 22:03:03 +00:00
|
|
|
properties:
|
|
|
|
- a Person model has properties such as First Name, Last Name and Birthday.
|
|
|
|
- First Name and Last Name are strings while Birthday is date.
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
A model can also do things as actions and behaviors. Some actions
|
|
|
|
are common to all instances of the same model while
|
2013-08-26 22:03:03 +00:00
|
|
|
others are specific to a given instance. For example,
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-26 22:03:03 +00:00
|
|
|
model: Person
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-26 22:03:03 +00:00
|
|
|
actions:
|
|
|
|
- a Person model can say his/her Full Name (relying on a given instance)
|
|
|
|
- a Person model can find people by Last Name (independent of instances)
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
Models are the vehicle for data exchange and data representation
|
|
|
|
across different layers in LoopBack. For example, the
|
|
|
|
Person model is available as database tables, Node.js classes, REST
|
|
|
|
resources, and mobile SDK objects.
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
When developing your mobile applications, think of models being the
|
|
|
|
"M" in your MVC framework. Models in LoopBack have
|
|
|
|
backend connectivity built in already, so that you can save data
|
|
|
|
back to your backend and call actions or functions run
|
2013-08-26 22:03:03 +00:00
|
|
|
on the backend seamlessly from your mobile application.
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-22 02:30:49 +00:00
|
|
|
###LoopBack Definition Language (LDL)
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
All models in LoopBack can be described as JSON objects. LoopBack
|
|
|
|
has utilized and extended JSON to define a model's properties and
|
|
|
|
structure. The JSON that is utilized to help define a model's
|
|
|
|
properties and structure or schema is called LoopBack Definition
|
|
|
|
language (LDL). LDL is a simple DSL to define data models in
|
|
|
|
JavaScript or plain JSON. The model definitions establish common
|
|
|
|
knowledge of data in LoopBack. For example,
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-26 22:03:03 +00:00
|
|
|
model: Person
|
|
|
|
|
|
|
|
definition in LDL:
|
|
|
|
{
|
|
|
|
"firstName" : "string",
|
|
|
|
"lastName" : "string",
|
|
|
|
"birthday": "date"
|
|
|
|
}
|
|
|
|
|
|
|
|
For more information, please read [LoopBack Definition Language Guide](/loopback-datasource-juggler/#loopback-definition-language-guide).
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-22 02:30:49 +00:00
|
|
|
###Datasources and Connectors
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
LoopBack allows you to connect to many sources of data and services
|
|
|
|
in the cloud and on premise in your data center.
|
|
|
|
These sources of data and services are called DataSources.
|
|
|
|
DataSources are accessed through a plugin called a Connector
|
|
|
|
in LoopBack. Plugins are highly customizable and extensible.
|
|
|
|
Unlike other mobile backend, LoopBack can leverage your existing
|
|
|
|
data and organize them in the form of models.
|
|
|
|
|
|
|
|
The concept of DataSource is introduced to encapsulate business
|
|
|
|
logic to exchange data between models and various data sources.
|
|
|
|
Data sources are typically databases that provide create, retrieve,
|
|
|
|
update, and delete (CRUD) functions. LoopBack also generalize
|
2013-08-26 22:03:03 +00:00
|
|
|
other backend services, such as REST APIs, SOAP Web Services, and Storage Services, as data sources.
|
2013-08-06 16:51:46 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
Data sources are backed by connectors which implement the data
|
|
|
|
exchange logic using database drivers or other client APIs.
|
|
|
|
In general, connectors are not used directly by application code.
|
|
|
|
The DataSource class provides APIs to configure the
|
|
|
|
underlying connector and exposes functions via DataSource or model
|
|
|
|
classes.
|
2013-08-12 17:40:50 +00:00
|
|
|
|
2013-08-26 22:03:03 +00:00
|
|
|
#### LoopBack Connector Modules
|
|
|
|
|
|
|
|
| Type | Package Name |
|
|
|
|
| --------- |:--------------------------------------------------------------------------------------:|
|
|
|
|
| Memory | [Built-in](https://github.com/strongloop/loopback-datasource-juggler) |
|
|
|
|
| MongoDB | [loopback-connector-mongodb](https://github.com/strongloop/loopback-connector-mongodb) |
|
|
|
|
| Oracle | [loopback-connector-oracle](https://github.com/strongloop/loopback-connector-oracle) |
|
|
|
|
| REST | [loopback-connector-rest](https://github.com/strongloop/loopback-connector-rest) |
|
|
|
|
|
|
|
|
For more information, please read [LoopBack DataSource and Connector Guide](/loopback-datasource-juggler/#loopback-datasource-and-connector-guide).
|
2013-08-12 17:40:50 +00:00
|
|
|
|
|
|
|
### REST
|
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
Everything defined in LoopBack is available to you as a REST
|
|
|
|
endpoint. For every model that is created in LoopBack, a
|
|
|
|
REST endpoint is automatically created for you. You can see and
|
|
|
|
experiment with your REST api using the [LoopBack API Explorer](http://localhost:3000/explorer/).
|
2013-08-12 17:40:50 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
LoopBack also supports other protocols for your API as well. Socket.
|
|
|
|
io is another protocol that is currently being developed.
|
2013-08-12 17:40:50 +00:00
|
|
|
|
2013-08-27 00:47:59 +00:00
|
|
|
For more information, please read [Model REST APIs](#model-rest-api).
|
2013-08-26 22:03:03 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
### Remoting
|
|
|
|
|
|
|
|
With LoopBack you can add whatever functionality you like either
|
|
|
|
by yourself or leveraging functionality from other open source
|
|
|
|
modules from the community. The ability to "mix in" behaviors are
|
|
|
|
available through the inherent power of Javascript's less resrictive
|
|
|
|
inheritance model.
|
|
|
|
|
|
|
|
LoopBack takes this one step further by allowing you to seamlessly
|
|
|
|
invoke server side code running in LoopBack in the backend from the
|
|
|
|
your client on the front end.
|
2013-08-12 17:40:50 +00:00
|
|
|
|
2013-08-29 01:22:03 +00:00
|
|
|
For more information, please read the [Remoting Guide](/strong-remoting.README.md).
|
2013-08-12 17:40:50 +00:00
|
|
|
|
|
|
|
---
|