环回中的动态模型

Vij*_*tha 2 strongloop loopbackjs

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

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

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

The*_*pha 5

好吧,我对此还是个新手,但我认为,您可以轻松地以编程方式创建任意数量的动态模型。例如,首先在您的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);
Run Code Online (Sandbox Code Playgroud)

app从出口projectroot/server/server.js,这样你就可以在你的脚本需要它。

此外,模式是可选的(在 noSql/mongo 的情况下)。创建动态模型后,您就可以访问 API 资源管理器并查看动态创建的模型/端点。

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

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));
});
Run Code Online (Sandbox Code Playgroud)

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

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

module.exports.models = [
    'ModelOne',
    'ModelTwo'
];
Run Code Online (Sandbox Code Playgroud)
// 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))
);
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明