A tutorial for basic database related features.
- Data sources
- Creating
- Configuring
- Models
- Creating
- Automigration
- Instance introspection (Discovery)
Database specific tutorials are on separate branches. The master branch contains the tutorial for MongoDB.
| Branch | Connector |
|---|---|
| master | MongoDB |
| mssql | Microsoft SQL Server |
| mysql | MySQL |
| oracle | Oracle |
| postgresql | PostgreSQL |
For example, to view the MySQL example:
git clone https://github.com/strongloop/loopback-example-database cd loopback-example-database git checkout mysql Before starting this tutorial, make sure you have the following installed:
- Node
- NPM
- StrongLoop Controller
git clone https://github.com/strongloop/loopback-example-database cd loopback-example-database npm install npm start - Name:
loopback-example-database - Dir to contain the project:
loopback-example-database
lb app loopback-example-database _-----_ | | ╭──────────────────────────╮ |--(o)--| │ Let's create a LoopBack │ `---------´ │ application! │ ( _´U`_ ) ╰──────────────────────────╯ /___A___\ / | ~ | __'.___.'__ ´ ` |° ´ Y ` ? What's the name of your application? loopback-example-database ? Enter name of the directory to contain the project: loopback-example-database info change the working directory to loopback-example-database ? Which version of LoopBack would you like to use? 3.x (current) ? What kind of application do you have in mind? empty-server (An empty LoopBack API, without any c onfigured models or datasources) cd loopback-example-database npm install --save loopback-connector-mongodb - Data source name:
accountDS - Select the connector for
accountDS:MongoDB
lb datasource accountDS ... # follow the prompts This creates a new data source named accountDS that uses the MongoDB connector.
For the purposes of this example, we will use a preconfigured StrongLoop MongoDB server. Edit server/datasources.json to set the MongoDB configs:
{ ... "accountDS": { "name": "accountDS", "connector": "mongodb", "host": "demo.strongloop.com", "port": 27017, "database": "demo", "username": "demo", "password": "L00pBack" } } Feel free to use your own local MongoDB instance. Simply change the configs above to match your own.
lb model ... # follow the prompts - Model name:
Account - Attach
Accountto:accountDS (mongodb) - Base class:
PersistedModel - Expose via REST:
Yes - Custom plural form: Leave blank
- Properties:
email- String
- Not required
createdAt- Date
- Not required
lastModifiedAt- Date
- Not required
slc loopback:model Account ... # follow the prompts With the account model configured, we can generate the corresponding MongoDB collection using the info from the Account metadata in common/models/account.json via auto-migration.
Start by creating a dir to store general-purpose scripts:
mkdir bin Inside that dir, create a script named automigrate.js. To create the Account collection and create two sample accounts, run:
node bin/automigrate.js WARNING
The
automigratefunction creates a new collection if it doesn't exist. If the collection already exists, it will be destroyed and it's data will be deleted. If you want to keep this data, useautoupdateinstead.
You should see:
Created: { email: 'baz@qux.com', createdAt: Thu Oct 22 2015 17:58:09 GMT-0700 (PDT), lastModifiedAt: Thu Oct 22 2015 17:58:09 GMT-0700 (PDT), id: 562986213ea33440575c6588 } Created: { email: 'foo@bar.com', createdAt: Thu Oct 22 2015 17:58:09 GMT-0700 (PDT), lastModifiedAt: Thu Oct 22 2015 17:58:09 GMT-0700 (PDT), id: 562986213ea33440575c6587 } If you are using Node 4, it is safe to ignore
Swagger: skipping unknown type "ObjectId". This warning will be addressed in a future update.
Projects scaffolded via slc loopback come with loopback-component-explorer preconfigured. From the project root, start the server:
node . Then to view the existing account data, browse to localhost:3000/explorer and click:
GET /AccountsTry it out!
You should see:
[ { "email": "foo@bar.com", "createdAt": "2015-10-23T00:58:09.280Z", "lastModifiedAt": "2015-10-23T00:58:09.280Z", "id": "562986213ea33440575c6587" }, { "email": "baz@qux.com", "createdAt": "2015-10-23T00:58:09.280Z", "lastModifiedAt": "2015-10-23T00:58:09.280Z", "id": "562986213ea33440575c6588" } ] Try out some of the other endpoints to get a feel for how explorer works.
Discovery is the process of reverse engineering a LoopBack model from an existing database schema.
The LoopBack MongoDB connector does not support discovery. However, you can use instance instrospection, which creates a LoopBack model from an existing JavaScript object.
To do this, create a script named instance-introspections.js in the bin dir. Then run:
node bin/instance-introspection You should see:
Created: { email: 'bob.doe@ibm.com', createdAt: Thu Oct 22 2015 19:38:20 GMT-0700 (PDT), lastModifiedAt: Thu Oct 22 2015 19:38:20 GMT-0700 (PDT), id: 56299d9d71c7f600719ca39f } See the official docs for more info.