Loopback

/

Grieg Research Guide

Grieg Research Guide

  • Annotert bibliografi
  • Selve bibliografien lages i Zotero
  • Skal inneholde:
    • Vurderinger av referanser
    • Kommentarer til vurderinger
    • Roller (redaktør, vurderingsforfatter)
      • Godkjenning og revidering
    • Lenker og/eller synking mot eksterne kilder
      • Zotero
      • Mermeid
      • ...
  • Opinionated web-API-rammeverk
  • Node/Express
  • Kan bruke både lokale databaser og andre web-APIer for persistens
  • Brukerautentisering
  • Hovedaktør: IBM
  • Automatisk Angular-SDK for frontend

Loopback

CLI / Lag modell

> lb model
? Enter the model name: Assessment
? Select the data-source to attach Comment to: db
? Select model's base class PersistedModel
? Expose Assessment via the REST API? Yes
? Custom plural form (used to build REST URL):
? Common model or server only? common
Let's add some Assessment properties now.

Enter an empty property name when done.
? Property name: body
   invoke   loopback:property
? Property type: string
? Required? Yes
? Default value[leave blank for none]:
...
// common/models/assessment.json
{
  "name": "Assessment",
  "base": "PersistedModel",
  "properties": {
    "body": {
      "type": "string",
      "required": true
    },
    ...
  },
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "accessType": "READ",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW"
    },
    {
      "accessType": "WRITE",
      "principalType": "ROLE",
      "principalId": "$authenticated",
      "permission": "ALLOW"
    }
  ],
  ...
}

Modell-definisjon

// common/models/assessment.js

'use strict';

module.exports = function(Assessment) {
  Assessment.validatesPresenceOf('projectId');
  Assessment.validatesPresenceOf('referenceId');
  Assessment.validatesPresenceOf('creatorId');
  ...
};

Connectors

  • Minne
  • Postgres, MySQL, Oracle, SQLite
  • MongoDB, CouchDB, Redis, Riak, Neo4j, ...
  • REST, SOAP
  • Elasticsearch

Angular SDK

declare var Object: any;
export interface AssessmentInterface {
  "id"?: any;
  "created"?: any;
  "title": any;
  "body": any;
  "projectId"?: any;
  "creatorId"?: any;
  "referenceId"?: any;
  project?: Project;
  comments?: Comment[];
  creator?: Contributor;
  contributors?: Contributor[];
  relatedWorks?: Work[];
  subjects?: Concept[];
  reference?: Reference;
}

export class Assessment implements AssessmentInterface {
  ...
}

Loopback

By Simon Mitternacht