• This repository has been archived on 18/Apr/2020
  • Stars
    star
    120
  • Rank 295,983 (Top 6 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 10 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tutorial for basic database related features.

loopback-example-database

⚠️ This LoopBack 3 example project is no longer maintained. Please refer to LoopBack 4 Examples instead. ⚠️

A tutorial for basic database related features.

Overview

Topics covered

  • Data sources
    • Creating
    • Configuring
  • Models
    • Creating
  • Automigration
  • Instance introspection (Discovery)

Database specific tutorials

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

Prerequisites

Before starting this tutorial, make sure you have the following installed:

Running the example

git clone https://github.com/strongloop/loopback-example-database
cd loopback-example-database
npm install
npm start

Tutorial - MongoDB

1. Create a new LoopBack app

App info

  • 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)

2. Install the LoopBack MongoDB connector

cd loopback-example-database
npm install --save loopback-connector-mongodb

3. Create a data source

Data source info

  • 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.

4. Configure the data source

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.

5. Create a new model

lb model
... # follow the prompts

Model Info

  • Model name: Account
  • Attach Account to: 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

6. Create the collection with sample data - Automigration

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 automigrate function 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, use autoupdate instead.

You should see:

Created: { email: '[email protected]',
  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: '[email protected]',
  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.

7. View data using the explorer

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 /Accounts
  • Try it out!

You should see:

[
  {
    "email": "[email protected]",
    "createdAt": "2015-10-23T00:58:09.280Z",
    "lastModifiedAt": "2015-10-23T00:58:09.280Z",
    "id": "562986213ea33440575c6587"
  },
  {
    "email": "[email protected]",
    "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.

8. Add a script to perform instance instrospection (Discovery)

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: '[email protected]',
  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.


More LoopBack examples

More Repositories

1

loopback

LoopBack makes it easy to build modern applications that require complex integrations.
JavaScript
13,228
star
2

node-foreman

A Node.js Version of Foreman
JavaScript
1,257
star
3

microgateway

IBM API Connect Microgateway framework, built on Node.js & Nginx
JavaScript
1,193
star
4

strong-pm

deployer for node applications
JavaScript
998
star
5

loopback-example-access-control

An example demonstrating LoopBack access control mechanisms.
JavaScript
370
star
6

strongloop

StrongLoop: Enterprise Node to Power the API Economy
JavaScript
332
star
7

loopback-example-offline-sync

Offline sync, change tracking, and replication.
JavaScript
286
star
8

zone

Flow control and error handling for Node.js
JavaScript
279
star
9

loopback-example-user-management

LoopBack user management example
JavaScript
189
star
10

loopback-example-passport

LoopBack example for facebook login
HTML
186
star
11

generator-loopback

Yeoman generator that scaffolds out a LoopBack application
JavaScript
158
star
12

loopback-sdk-angular

Service for auto-generating Angular $resource services for LoopBack
JavaScript
155
star
13

loopback-component-passport

LoopBack passport integration to support third party logins and account linking
JavaScript
139
star
14

loopback-component-storage

Storage component for LoopBack.
JavaScript
130
star
15

strong-pubsub

PubSub for Node.js, Browser, Mobile and IoT
JavaScript
129
star
16

strong-arc

StrongLoop Arc has been replaced by API Connect. We recommend Arc users move to the Essentials edition of API Connect. If you have questions, please email [email protected].
JavaScript
114
star
17

loopback-cli

LoopBack CLI tool for creating projects, models and more.
JavaScript
105
star
18

strong-remoting

Communicate between objects in servers, mobile apps, and other servers.
JavaScript
104
star
19

angular-live-set

Build realtime angular apps with html5's Server Sent Events
JavaScript
101
star
20

strong-cluster-control

cluster control module, allowing run-time control and monitoring of cluster
JavaScript
100
star
21

loopback-example-angular

A simple todo list using AngularJS on the client-side and LoopBack on the server-side.
JavaScript
97
star
22

loopback-component-push

Push notification component for LoopBack.
JavaScript
96
star
23

loopback4-example-microservices

Deprecated - please use https://github.com/strongloop/loopback4-example-shopping/tree/master/kubernetes
TypeScript
88
star
24

loopback-getting-started

Getting started example for LoopBack
TSQL
87
star
25

loopback-example-relations

Basic model relations concepts.
JavaScript
80
star
26

loopback-component-explorer

Browse and test your LoopBack app's APIs
JavaScript
71
star
27

loopback-example-ssl

An example to demonstrate how to set up SSL for LoopBack applications
JavaScript
69
star
28

loopback-getting-started-intermediate

JavaScript
68
star
29

loopback-example-facade

Best practices for building scalable Microservices.
JavaScript
67
star
30

strong-supervisor

Application supervisor that automatically adds cluster control and performance monitoring with StrongOps
JavaScript
66
star
31

loopback-boot

Convention-based bootstrapper for LoopBack applications
JavaScript
62
star
32

loopback-component-oauth2

oAuth 2.0 server for LoopBack
JavaScript
62
star
33

strong-agent

Profile, control, and monitor Node.js processes and clusters
JavaScript
61
star
34

strong-mq

MQ API with cluster integration, implemented over various message queues.
JavaScript
56
star
35

loopback-filters

implements LoopBack-style filtering.
JavaScript
55
star
36

modern-syslog

modern-syslog
JavaScript
49
star
37

loopback-example-app-logic

How to add your own business logic in a LoopBack app.
JavaScript
49
star
38

loopback-workspace

Manage a directory of LoopBack projects for a user, team, or organization
JavaScript
49
star
39

loopback-example-angular-live-set

Example of realtime angular app using html5 Server-sent events
JavaScript
48
star
40

strong-build

Build node packages into deployable applications
JavaScript
47
star
41

strong-oracle

Deprecated: Node.js Driver for Oracle databases (Use https://github.com/oracle/node-oracledb instead)
C++
45
star
42

loopback-swagger

LoopBack Swagger Spec Integration
JavaScript
44
star
43

loopback-example-storage

Example for loopback-component-storage.
HTML
43
star
44

supercluster

A module to make it easy to distribute work across multiple network-connected hosts.
JavaScript
30
star
45

loopback-sdk-angular-cli

CLI tools for auto-generating Angular $resource services for LoopBack
JavaScript
29
star
46

gulp-loopback-sdk-angular

gulp plugin for auto-generating Angular $resource services for LoopBack
JavaScript
27
star
47

apiconnect-docker

IBM API Connect on Docker
Shell
26
star
48

strong-globalize

strong-globalize is built on Unicode CLDR and jquery/globalize and implements automatic extraction of strings from JS source code and HTML templates, lint the string resource, machine-translate them in seconds. In runtime, it loads locale and string resource into memory and provides a hook to persistent logging.
JavaScript
25
star
49

loopback-context

Current context for LoopBack applications, based on node-continuation-local-storage
JavaScript
25
star
50

grunt-loopback-sdk-angular

Grunt plugin for auto-generating Angular $resource services for LoopBack
JavaScript
23
star
51

strong-cluster-socket.io-store

Implementation of socket.io store using node's native cluster messaging
JavaScript
23
star
52

loopback-connector-remote

LoopBack remote REST API connector
JavaScript
22
star
53

eslint-config-loopback

LoopBack's ESLint shareable configs.
20
star
54

strongloop-buildpacks

Shell
19
star
55

loopback-connector-swagger

Connect Loopback to a Swagger-compliant API
JavaScript
19
star
56

loopback-multitenant-poc

LoopBack Multitenancy PoC
JavaScript
19
star
57

flow-engine

JavaScript
18
star
58

loopback-example-mixins

Example app demonstrating mixins
JavaScript
17
star
59

eslint-config-strongloop

Baseline eslint configuration for StrongLoop modules
JavaScript
17
star
60

async-tracker

The AsyncTracker API is the JavaScript interface which allows developers to be notified about key events in the lifetime of observed objects and scheduled asynchronous events.
JavaScript
16
star
61

strong-express-metrics

An Express middleware for collecting HTTP statistics.
JavaScript
15
star
62

strong-store-cluster

JavaScript
14
star
63

strong-pubsub-example

Simple example app using strong-pubsub
JavaScript
14
star
64

strong-docs

build documentation sites for your node modules
TypeScript
14
star
65

loopback-connector-jsonrpc

Loopback Connector for JSONRPC
JavaScript
13
star
66

strong-deploy

Deploy nodejs applications
JavaScript
13
star
67

strong-data-uri

Parser and encoder for `data:` URIs
JavaScript
13
star
68

loopback-example-polyglot

Example LoopBack application with polyglot runtimes
JavaScript
13
star
69

loopback-example-push

Push notifications with LoopBack.
JavaScript
12
star
70

strong-task-emitter

JavaScript
11
star
71

strong-pubsub-redis

Redis adapter for strong-pubsub
JavaScript
11
star
72

strong-service-systemd

Generate an systemd service based on provided parameters
JavaScript
11
star
73

strong-cluster-connect-store

Implementation of connect store using node's native cluster messaging
JavaScript
11
star
74

strong-nginx-controller

Nginx controller for Arc
JavaScript
10
star
75

loopback-sandbox

A repository for reproducing LoopBack community issues.
JavaScript
10
star
76

loopback4-example-family-tree

An example LoopBack application to demonstrate OASGraph
TypeScript
10
star
77

strong-log-transformer

A stream filter for performing common log stream transformations like timestamping and joining multi-line messages.
JavaScript
10
star
78

strong-agent-statsd

publish strong-agent metrics to statsd
JavaScript
9
star
79

loopback-connector-db2iseries

Loopback connector for DB2 on iSeries
PLSQL
9
star
80

loopback-multitenancy

WORK IN PROGRESS: Multitenancy component for LoopBack.
JavaScript
9
star
81

strong-pubsub-mqtt

JavaScript
9
star
82

express-example-app

express example app for strong-pm
JavaScript
8
star
83

strong-config-loader

JavaScript
8
star
84

poc-loopback-multitenancy

Proof of concept for multitenancy in LoopBack.
JavaScript
8
star
85

strong-tools

Tools for packaging, releasing, and preparing npm modules
JavaScript
8
star
86

ephemeral-npm

Disposable npm server for testing packages
Shell
8
star
87

dist-paas-buildpack

StrongLoop distributions for PAAS
Shell
7
star
88

strong-service-install

Create/install system service for a given app
JavaScript
7
star
89

strong-service-upstart

Generate an upstart job based on provided parameters
JavaScript
7
star
90

strong-cluster-tls-store

Implementation of TLS session store using node's native cluster messaging
JavaScript
7
star
91

loopback-phase

Phase management for LoopBack applications.
JavaScript
7
star
92

loopback-oracle-installer

Loopback Oracle Installer
JavaScript
7
star
93

strong-module-loader

JavaScript
7
star
94

strong-pubsub-bridge

JavaScript
6
star
95

v4.loopback.io

LoopBack 4 Web Site
HTML
6
star
96

strong-tunnel

Disposable ssh proxy for TCP connections via URL
JavaScript
6
star
97

strong-pubsub-primus

Primus compatibility layer for strong-pubsub.
JavaScript
6
star
98

loopback-example-kv-connectors

LoopBack KeyValue connector examples.
JavaScript
6
star
99

strong-docker-build

Build a Docker image of an app run under strong-supervisor
JavaScript
6
star
100

loopback-oracle-builder

Loopback Oracle Builder
Shell
5
star