loopback-datasource-juggler/README.md

137 lines
4.5 KiB
Markdown
Raw Normal View History

2013-08-13 00:38:04 +00:00
# LoopBack DataSource Juggler
2013-07-16 19:41:49 +00:00
LoopBack DataSource Juggler is an ORM that provides a common set of interfaces
for interacting with databases, REST APIs, and other data sources. It was
initially forked from [JugglingDB](https://github.com/1602/jugglingdb).
2013-08-13 00:38:04 +00:00
## Overview
LoopBack DataSource Juggler consists of the following components:
* LoopBack Definition Language
* DataSource
* Connector
![loopback-datasource-juggler-overview](docs/overview.png "LoopBack Diagram")
2013-08-13 00:38:04 +00:00
2013-08-21 00:06:36 +00:00
## LoopBack Definition Language
2013-08-13 00:38:04 +00:00
To define model dataSource have single method `dataSource.define`. It accepts
three arguments:
2013-08-13 00:38:04 +00:00
* **model name**:
String name in camel-case with first upper-case letter. This name will be
used later to access model.
2013-08-13 00:38:04 +00:00
* **properties**:
Object with property type definitions. Key is property name, value is type
definition. Type definition can be function representing type of property
(String, Number, Date, Boolean), or object with {type: String|Number|...,
index: true|false} format.
* **settings**:
Object with model-wide settings such as `tableName` or so.
Examples of model definition:
var User = dataSource.define('User', {
email: String,
password: String,
birthDate: Date,
activated: Boolean
});
var User = dataSource.define('User', {
email: { type: String, limit: 150, index: true },
password: { type: String, limit: 50 },
birthDate: Date,
registrationDate: {
type: Date,
default: function () { return new Date }
},
activated: { type: Boolean, default: false }
}, {
tableName: 'users'
});
2013-08-21 00:06:36 +00:00
## DataSource
2013-08-13 00:38:04 +00:00
DataSource is a factory for model classes. DataSource connected with specific
database or other backend system using connector.
2013-08-13 00:38:04 +00:00
All model classes within single datasource shares same connector type and one
database connection. But it's possible to use more than one datasource to
connect with different databases.
2013-08-13 00:38:04 +00:00
2013-08-21 00:06:36 +00:00
### Creating dataSource
2013-08-13 00:38:04 +00:00
`DataSource` constructor available on `loopback-datasource-juggler` module:
var DataSource = require('loopback-datasource-juggler').DataSource;
DataSource constructor accepts two arguments. First argument is connector. It
could be a connector name or connector package:
2013-08-13 00:38:04 +00:00
var dataSourceByConnectorName = new DataSource('memory');
var dataSourceByConnectorModule = new DataSource(require('redis'));
2013-08-21 00:06:36 +00:00
### Settings
2013-08-13 00:38:04 +00:00
Second argument is optional settings. Settings object format and defaults
depends on specific connector, but common fields are:
* `host`: Database host
* `port`: Database port
* `username`: Username to connect to database
* `password`: Password to connect to database
* `database`: Database name
* `debug`: Turn on verbose mode to debug db queries and lifecycle
For connector-specific settings refer to connector's readme file.
## LoopBack Connectors
| Type | Package Name |
| --------- |:--------------------------------------------------------------------------------------:|
| MongoDB | [loopback-connector-mongodb](https://github.com/strongloop/loopback-connector-mongodb) |
| Oracle | [loopback-connector-oracle](https://github.com/strongloop/loopback-connector-oracle) |
| MySQL | [loopback-connector-mysql](https://github.com/strongloop/loopback-connector-mysql) |
LoopBack connectors provide access to backend systems including databases,
REST APIs and other services. Connectors are not used directly by application
code. We create a DataSource to interact with the connector.
2013-08-13 00:38:04 +00:00
For example,
var DataSource = require('loopback-datasource-juggler').DataSource;
var oracleConnector = require('loopback-connector-oracle');
var ds = new DataSource(oracleConnector, {
2013-08-22 19:20:07 +00:00
host : '127.0.0.1',
2013-08-13 00:38:04 +00:00
database : 'XE',
username : 'strongloop',
2013-08-22 19:20:07 +00:00
password : 'password',
2013-08-13 00:38:04 +00:00
debug : true
});
The connector argument passed the DataSource constructor can be one of the
following:
2013-08-13 00:38:04 +00:00
* The connector module from `require(connectorName)`
* The full name of the connector module, such as 'loopback-connector-oracle'
* The short name of the connector module, such as 'oracle', which will be
converted to 'loopback-connector-<shortName>'
2013-08-13 00:38:04 +00:00
* A local module under ./connectors/<connectorName> folder
2011-10-05 21:18:38 +00:00
## Installation
2013-08-13 00:38:04 +00:00
npm install loopback-datasource-juggler
2011-10-05 21:18:38 +00:00
2013-07-16 18:28:18 +00:00
Also install the appropriated connector, for example for mongodb:
2012-12-15 13:03:06 +00:00
2013-07-16 18:28:18 +00:00
npm install loopback-connector-mongodb
2012-12-15 13:03:06 +00:00
2013-07-16 18:28:18 +00:00
check following list of available connectors
2012-12-15 13:03:06 +00:00
2013-08-13 00:38:04 +00:00