LoopBack 3 – Simple API with MongoDB Example

Expose your MongoDB NoSQL as a REST service with LoopBack 3 (Node.js Open API Framework)

This post is continuation of previous post https://kenanhancer.com/2019/09/13/loopback-3-simple-api-with-mysql-example/

So if you want to start from beginning, read that one as well.

Follow this link https://kenanhancer.com/2019/09/13/mongodb-docker-container-exercise/ to create a MySQL container 🙂

You can find LoopBack 3 project in the following repository. After clonning switch to mongodb branch 🙂 or run the following command.

git checkout mongodb

https://github.com/kenanhancer/loopback3-simple-api.git

LoopBack 3 – Simple API with MySQL Example

Expose your MySQL Database as a REST service with LoopBack 3 (Node.js Open API Framework)

This post is continuation of previous post https://kenanhancer.com/2019/09/09/loopback-3-simple-api-example/

So if you want to start from beginning, read that one as well.

Follow this link https://kenanhancer.com/2019/09/12/mysql-docker-container-exercise/ to create a MySQL container 🙂

LoopBack MySQL example will not start wihout running the following code in MySQL Database container. So, run the following command in it.

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'password';

You can find LoopBack 3 project in the following repository. After clonning switch to mysql branch 🙂 or run the following command.

git checkout mysql

https://github.com/kenanhancer/loopback3-simple-api.git

LoopBack 3 – Simple API Example

I am developing APIs with Node.js and LoopBack during last one year. So, it is time to create a post about it. 🙂 I try to build a detailed project. I hope that this post will be a good reference for developers.

Install LoopBack CLI Tools

There are two LoopBack CLI Tools.

You can also use the legacy StrongLoop CLI tool slc

Install LoopBack CLI Tool

$ npm install -g loopback-cli

This installs the lb command-line tool for scaffolding and modifying LoopBack applications.

Install IBM API Connect v5 developer toolkit

$ npm install -g apiconnect

IBM API Connect v5 developer toolkit includes:

  • The graphical API Designer tool that you can use to create and modify LoopBack applications.
  • The apic command-line tool for scaffolding and modifying LoopBack applications.

Create a Simple API

If using loopback-cli

$ lb

If using apic

$ apic loopback

If using slc

$ slc loopback

I have used LoopBack CLI in the following video

Run the application and API Explorer

Run the following command in Terminal to start loopback application.

$ npm start

Open your browser to http://localhost:3000/explorer

LoopBack API with InMemory Datasource Example

You can find LoopBack 3 project in the following repository.

https://github.com/kenanhancer/loopback3-simple-api.git

Node.js babel different usage transpiling to ES5 and Debugging

There are different usages of babel tool. I put a sample package.json file. Notice that there are scripts block which has different usages.

Creating Babel configuration file

.babelrc

{
  "presets": [
    "env"
  ],
  "plugins": [
    "transform-runtime"
  ],
  "sourceMaps": true,
  "retainLines": true
}

Running with Babel-node

//If you have installed babel-cli package globally, run below code.
babel-node --presets=env --plugins=transform-runtime src

or

//If you have .babelrc config file, run below code without specifying inline arguments.
babel-node src

or

//If you have installed babel-cli package locally, run below code.
./node_modules/.bin/babel-node --presets=env --plugins=transform-runtime src

Running with Babel-register

node --require ./node_modules/babel-register src

or

node --require babel-register src/index.js

Running with Babel

babel ./src -d dist -s && node dist/index.js
{
  "name": "babeltest1",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "buildv1:src": "babel ./src -d dist -s",
    "buildv1": "rm -rf dist && npm run buildv1:src",
    "start:buildv1": "npm run buildv1 && node dist/index.js",

    "buildv2:src": "babel ./src --out-dir dist --source-maps",
    "buildv2": "rm -rf dist && npm run buildv2:src",
    "start:buildv2": "npm run buildv2 & node dist/index.js",

    "buildv3:src": "babel --no-babelrc . --out-dir dist --presets=env --plugins=transform-runtime --source-maps --ignore 'node_modules,dist,.babelrc,.compiled,.vscode'",
    "buildv3": "rm -rf dist && npm run buildv3:src && mv dist/src/* dist && rm -rf dist/src",
    "start:buildv3": "npm run buildv3 && node dist/index.js",
    
    "buildv4:src": "$(which babel) --no-babelrc src --out-dir dist --presets=env --plugins=transform-runtime --source-maps",
    "buildv4": "rm -rf dist && npm run buildv4:src",
    "start:buildv4": "npm run buildv4 && node dist/index.js",

    "buildv5:src:watch": "babel src --out-dir dist --source-maps --watch",
    "buildv5:watch": "rm -rf dist && npm run buildv5:src:watch",
    "start:buildv5": "npm run buildv5:watch && node dist/index.js",

    "buildAndRunWithBabelNode": "babel-node --presets=env --plugins=transform-runtime src",

    "buildAndRunWithBabelRegister": "node --require ./node_modules/babel-register src",

    "buildAndRunWithBabelRegisterv2": "node --require babel-register src/index.js",

    "build:lib": "$(which babel) --no-babelrc src --out-dir=dist --presets=env --plugins=transform-runtime --copy-files --source-maps",
    "build": "rm -rf dist && npm run build:lib",
    "watch": "npm run build:lib -- --watch",
    "start": "npm run build && node --inspect dist/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.6.1"
  },
  "dependencies": {}
}

You can reach github project from the following link.

https://github.com/kenanhancer/BabelDifferentUsageDemo1