嗯,我对此还很陌生,但我认为,您可以轻松地以编程方式创建任意数量的动态模型。例如,首先,在您的计算机中创建一个启动脚本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);
The 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));
});
Update:多个模型动态注册的另一个工作示例:
// 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))
);
现在,要使用相同架构添加任何动态模型,您只需在 models 数组中添加模型名称即可。这已经过测试并且工作正常: