基本上标题要求什么。我想知道是否可以在Loopback中创建一个自定义视图模型,数据源无知?
我目前的过程是在MySQL中创建一个视图,然后在Loopback中构建一个覆盖视图的模型,但我最近意识到,如果我们决定迁移到不同的后端,或以某种方式更改数据源,我们和#39; d必须弄清楚如何重新创建视图。
Google对此进行了搜索,发现了bupkis,所以我想我会把它扔到这里,看看是否有人知道这个话题。
提前致谢!
答案 0 :(得分:0)
在Loopback中使用视图效果很好。只需将视图看作是一个表,Loopback将以同样的方式处理它。实际上,如果您愿意,您实际上可以对视图执行一些写操作。假设您已经在SQL中创建了视图,这是一个片段,用于从Loopback中的现有表或视图创建端点:
/**
* Creates a REST endpoint using the persistedModel.
* @function createPersistedModelApi
*/
function createPersistedModelApi(app, dataSourceName: string, tablename: string, callback) {
let eventInfo: Type.Event
let ds = app.datasources[dataSourceName];
ds.discoverSchema(tablename, null, function(err, schema) {
if (!err) {
// Set the key field.
schema.properties.rowid.id = true;
// Get a list of the fields
var fields = Object.keys(schema.properties);
// Set some properties on all fields.
fields.forEach(function(field) {
schema.properties[field].required = false;
schema.properties[field].nullable = true;
});
// Create the model.
ds.createModel(tablename,
schema.properties,
{
plural: tablename,
core: true,
base: "PersistedModel",
idInjection: false
}
)
// Get an instance of the model.
let model = ds.getModel(tablename);
// Make the model public with a REST API.
app.model(model, { dataSource: dataSourceName, public: true });
// Error
} else {
....
}
// Return
........
});
}