1.4.4 • Published 9 years ago

loopback-with-domain v1.4.4

Weekly downloads
44
License
-
Repository
-
Last release
9 years ago

loopback-with-domain

run loopback server with "domain"

domain is in this context business logic, the same as Domain-Driven Design (DDD).

connection with base-domain

also, this loopback extends original loopback.

  • admin
  • push notification

follow these section to see how to use admin and push notification

install

npm install loopback-with-domain

simplest run, without domain

you can just run loopback without domain information by

require('loopback-with-domain').runWithoutDomain().then (lbInfo) ->

    console.log lbInfo.getURL()         # loopback api root
    console.log lbInfo.getAccessToken() # access token of admin

then loopback server (with admin, push-notification function) runs

run with domain

before running, you can prepare a directory which contains custom config information.

(config-dir) # any name is acceptable
|-- model-definitions.coffee
|-- common
|   |-- server.coffee
|   `-- admin.coffee
|-- development
|   `-- datasources.coffee
`-- production
    `-- datasources.coffee
lbWithDomain = require 'loopback-with-domain'

configDir = '/path/to/config-dir'

domain = require('base-domain').createInstance(dirname: 'domain')

lbWithDomain.runWithDomain(domain, configDir).then ->
    # loopback started

admin

(coming soon)

push notification

(coming soon)

configs

these are the config names.

  • admin
  • datasources
  • middleware
  • server
  • push-credentials

see JSON files in "default-values/non-model-configs" directory. you can set the same properties as these JSONs.

admin

config keymeaning
accessTokenaccessToken for admin

datasources

config keymeaning
memoryon memory datasource
dbdatasource for domain entities

server

config keymeaningdefault
restApiRootREST api root/api
portport number3000

push-credentials

config keymeaning
gcmServerApiKeyapi key for Google Cloud Messaging (GCM)
apnsCertDatacertificate pem contents for APNs
apnsKeyDatakey pem contents for APNs

model definitions

module.exports =
    player: # model name
        base: 'User'  # the same as loopback model settings.base
        aclType: 'admin' # specific for this system

    instrument:
        aclType: 'owner-read'

the same format as loopback model definition except "aclType" value. name, base, relations and properties are automatically set from domain information.

aclType

loopback-with-domain generates acls from aclType.

three types are available.

aclTypemeaning
adminonly admin can CRUD the model
owneradmin and the owner of the model can CRUD
public-readeveryone can READ the model and admin can CRUD
noneeveryone can CRUD the model

switching environment

running script with environment variable "NODE_ENV" like

$ NODE_ENV=production node app.js

"development" is selected by default.

when your config dir is

(config-dir) # any name is acceptable
|-- common
|   |-- server.coffee
|   `-- admin.coffee
|-- development
|   `-- datasources.coffee
|-- local
|   `-- datasources.coffee
|-- production
|   `-- datasources.coffee

and launching script like

$ NODE_ENV=local node app.js

then, loopback-with-domain selects configs in "local" directory.

passing custom environment with argument

env = 'production'

lbWithDomain.runWithDomain(domain, configDir, env)

env is prior to NODE_ENV settings.

modified loopback-datasource-juggler

using CureApp/loopback-datasource-juggler.

this repository is almost the same as original one except 'memory' connector handles id as string (orignally integer).