【问题标题】:Dynamic Models in LoopbackLoopback 中的动态模型
【发布时间】:2018-04-19 20:41:46
【问题描述】:

如何在环回中创建动态模型,而不是对所有模型使用命令“lb model”。

例如: 如果我想创建 30 个具有几乎相同属性的模型,将难以一次又一次地创建所有 30 个模型和那些相应的属性。

是否可以创建模型并使用环回将其迭代到另一个模型。请分享您的答案。

【问题讨论】:

    标签: loopbackjs strongloop


    【解决方案1】:

    好吧,我还是新手,但我认为,您可以轻松地以编程方式创建任意数量的动态模型。例如,首先,在您的boot 目录中创建一个启动脚本,例如:server\boot\dynamic-models.js,然后使用以下代码创建一个动态模型:

    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);
    

    app 是从 projectroot/server/server.js 导出的,因此您可以在脚本中使用它。

    此外,模式是可选的(在 noSql/mongo 的情况下)。创建动态模型后,您可以访问 api explorer 并查看动态创建的模型/端点。

    如果您要创建更多模型,那么您只需要循环并创建模型,例如:

    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));
    });
    

    更新:多个模型动态注册的另一个工作示例:

    // 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))
    );
    

    现在,要使用相同的架构添加任何动态模型,您只需要在模型数组中添加模型名称即可。这是经过测试并且工作正常:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多