Estamos desarrollando un producto de contabilidad SaaS que utiliza el marco REST de Loopback y permite a los usuarios finales autenticados crear nuevas tablas en su propia instancia de base de datos (MySQL o PostgreSQL).

PREGUNTA : ¿Cómo podemos crear un nuevo punto final Looback REST de nivel raíz en código (sobre la marcha) para acceder a la nueva tabla? Por ejemplo, si el usuario agrega una nueva tabla llamada 'cars', necesitamos exponer un nuevo extremo REST de nivel raíz en un código llamado '/ api / cars' que usa el modelo persistente para proporcionar la capacidad CRUD completa sin reiniciando la instancia de Node.js y sin escribir archivos JSON en el disco.

NOTA : esta pregunta es similar a LoopBack: Cómo crear dinámicamente puntos finales REST personalizados en código (sobre la marcha). Sin embargo, esa pregunta y respuesta solo se referían a la creación de un nuevo modelo en código y no abordaban cómo exponer un nuevo punto final REST de nivel raíz personalizado para acceder a un nuevo modelo.

Encontré esta publicación interesante que parece estar encabezada en el dirección correcta, pero no estamos seguros de cómo crear un nuevo punto final REST raíz y luego conectarlo a un modelo generado dinámicamente. Además, usamos Kendo en lugar de Angular :

angular.module('my-app-module')
  .config(function(LoopBackResourceProvider) {
    // Change the URL where to access the LoopBack REST API server
    LoopBackResourceProvider.setUrlBase('http://api.example.com/');
  });
0
A2MetalCore 30 ene. 2016 a las 05:26

2 respuestas

La mejor respuesta

Aquí está la solución con la que terminamos:

// servidor \ boot.js

var ds = app.datasources['mysql'];    
ds.createModel('transactiontype', {
    rowid: {
        type: Number,
        id: true
    },
    transactiontypeid: String,
    description: String,
    active: Number
});    
let model = ds.getModel('transactiontype');    
app.model(model, { public: true });
0
ASA2 1 feb. 2016 a las 14:58

Todo lo que necesita hacer es crear un nuevo modelo en el volar adjunto a una fuente de datos. Una vez que se crea el modelo, ¡todos los puntos finales estarán disponibles para alcanzarlo!

var ds = app.datasources['my-data'];
ds.createModel('Car', {
  model: String,
  make: String,
  year: number
});
1
Jordan Kasper 30 ene. 2016 a las 16:17