如何在Loopback中创建数据视图模型?

时间:2016-05-23 14:34:09

标签: mysql node.js loopbackjs

基本上标题要求什么。我想知道是否可以在Loopback中创建一个自定义视图模型,数据源无知?

我目前的过程是在MySQL中创建一个视图,然后在Loopback中构建一个覆盖视图的模型,但我最近意识到,如果我们决定迁移到不同的后端,或以某种方式更改数据源,我们和#39; d必须弄清楚如何重新创建视图。

Google对此进行了搜索,发现了bupkis,所以我想我会把它扔到这里,看看是否有人知道这个话题。

提前致谢!

1 个答案:

答案 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
        ........

    });
}