2 votes

Modèles dynamiques en boucle

Comment créer un modèle dynamique dans le loopback, au lieu d'utiliser la commande "lb model" pour tous les modèles.

F Si je veux créer 30 modèles avec presque les mêmes propriétés, j'aurai du mal à créer les 30 modèles et les propriétés correspondantes encore et encore.

Est-il possible de créer le modèle et de l'itérer vers un autre modèle en utilisant le loopback. Merci de partager vos réponses.

4voto

WereWolf - The Alpha Points 49671

Je suis encore novice en la matière, mais je pense que vous pouvez facilement créer un nombre quelconque de modèles dynamiques par programme. Par exemple, au début, créez un script de démarrage à l'intérieur de votre boot répertoire, ex : server\boot\dynamic-models.js et ensuite créer un modèle dynamique en utilisant le code suivant :

const app = require('../server');
const dbDataSource = app.datasources.db;
const schema = {
    "name": {
      "type": "string",
      "required": true
    },
    "email": {
      "type": "string",
      "required": true
    }
};

const MyDynamicModel = dbDataSource.createModel('MyDynamicModel', schema);

app.model(MyDynamicModel);

Le site app est exporté de projectroot/server/server.js afin que vous puissiez l'exiger dans votre script.

De même, le schéma est facultatif (dans le cas de noSql/mongo). Une fois que vous avez créé les modèles dynamiques, vous pouvez visiter votre explorateur d'API et voir les modèles/endpoints créés dynamiquement.

Si vous avez plus de modèles à créer, il vous suffit de faire une boucle et de créer les modèles, par exemple :

const models = ['ModelOne', 'ModelTwo'];
// or export from other files and import those here, i.e:
// const schema = require('exported-from-another-file');
// const models = require('exported-from-another-file');
models.forEach(model => {
    app.model(dbDataSource.createModel(model, schema));
});

Mise à jour : Un autre exemple de travail pour l'enregistrement dynamique de plusieurs modèles :

// project-root/common/dynamic/index.js
module.exports.schema = {
    "name": {
        "type": "string",
        "required": true
    },
    "email": {
        "type": "string",
        "required": true
    }
};

module.exports.models = [
    'ModelOne',
    'ModelTwo'
];

// project-root/server/boot/dynamic-models.js
const app = require('../server');
const dbDataSource = app.datasources.db;
const {schema, models} = require('../../common/dynamic');
models.forEach(
    model => app.model(dbDataSource.createModel(model, schema))
);

Maintenant, pour ajouter un modèle dynamique utilisant le même schéma, il suffit d'ajouter un nom de modèle dans le tableau des modèles. Ceci est testé et fonctionne bien :

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X