环回中的动态模型

时间:2018-04-19 07:17:29

标签: loopbackjs strongloop

如何在环回中创建动态模型,而不是使用命令" lb model"适用于所有型号。

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

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

1 个答案:

答案 0 :(得分:3)

嗯,我还是新手,但我认为,您可以通过编程方式轻松创建任意数量的动态模型。例如,首先,在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是从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)); }); 导出的,因此您可以在脚本中使用它。

此外,架构是可选的(如果是noSql / mongo)。创建动态模型后,您可以访问api explorer并查看动态创建的模型/端点。

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

// 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))
);
k = s.split(',')

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

enter image description here