2016-03-04 43 views
-1

请帮助使用strongloop访问postgresql数据库视图。
IM能够访问表如何使用strongloop访问postgresql数据库视图

{"name": "test", 
    "options": { 
     "idInjection": false, 
     "postgresql": { 
     "schema": "public", 
     "table": "test_data_v" 
     } 
    }, 
    "properties": { 

     "assetid": { 
     "type": "String", 
     "required": false, 
     "length": 40, 
     "precision": null, 
     "scale": null, 
     "id": 1, 
     "postgresql": { 
      "columnName": "asset_id", 
      "dataType": "character varying", 
      "dataLength": 40, 
      "dataPrecision": null, 
      "dataScale": null, 
      "nullable": "YES" 
     } 
     } 
    }} 

以同样的方式请建议我如何访问视图 感谢 迪夫亚

回答

0

I am not installed postgresql but I tried in mysql, Its working fine. IN your model you can do directly see this Example

在数据库中,我创建了认为是

CREATE VIEW shareviews AS 
SELECT id,name 
FROM share where id = 1; 

In model you can call viewname directly like this example

module.exports = function(Share) { 

    var server = require('../../server/server'); 
    var ds = server.dataSources.MySQL; // use server.dataSources.postgres; 

    Share.list = function(optionalparam, cb) {  

     var sql = 'select * from shareviews'; 
     ds.connector.execute(sql, function(err, data) 
     { 
     if(err) return err; 
     console.log(err); 
     console.log("data",data); 
     cb(null, data); 
     }); 

    } 

    Share.remoteMethod(
     'list', 
     { 
      accepts: {arg: 'param', type: 'string'}, 
      returns: {arg: 'result', type: 'object'}, 
      http: {path: '/list', verb: 'get'} 
     } 
    ); 


}; 

You need to set data source in datasource.json

{ 
    "db": { 
    "name": "db", 
    "connector": "memory" 
    }, 
    "postgres": { 
    "host": "localhost", 
    "port": 5432, 
    "database": "postgres", 
    "username": "postgres", 
    "password": "*******", 
    "name": "postgres", 
    "connector": "postgresql" 
    } 
} 

Then in model-config.json you need to assign data source name to each model.

也就是说

{ 
    "_meta": { 
    "sources": [ 
     "loopback/common/models", 
     "loopback/server/models", 
     "../common/models", 
     "./models" 
    ], 
    "mixins": [ 
     "loopback/common/mixins", 
     "loopback/server/mixins", 
     "../common/mixins", 
     "./mixins" 
    ] 
    }, 
    "User": { 
    "dataSource": "db" 
    }, 
    "AccessToken": { 
    "dataSource": "db", 
    "public": false 
    }, 
    "ACL": { 
    "dataSource": "db", 
    "public": false 
    }, 
    "RoleMapping": { 
    "dataSource": "db", 
    "public": false 
    }, 
    "Role": { 
    "dataSource": "db", 
    "public": false 
    }, 
    "yourmodelname": { 
    "dataSource": "postgres", 
    "public": true 
    }, 
    "yourmodelname": { 
    "dataSource": "postgres", 
    "public": true 
    } 
} 

then you can access database in you model.js or Rest call(example localhost:3000/explorer) For Example my model name Grocerylist

module.exports = function(Grocerylist) { 
    Grocerylist.beforeRemote('create', function(context, user, next) { 
    var req = context.req; 
    req.body.date = Date.now(); 
    req.body.shopperId = req.accessToken.userId; 
    next(); 
    }); 

    Grocerylist.complete = function(shopperId, cb) { 
    Grocerylist.find({ 
     where: { 
     purchased:false, 
     shopperId: shopperId, 
     } 
    }, function(err, list) { 
     var response; 
     if (typeof list === 'undefined' || list.length === 0) { 
      response = "All done shopping!" 
     } 
     else { 
      response = "Shopping is not done."; 
     } 
     cb(null, response); 
    }); 
    }; 
    Grocerylist.remoteMethod(
    'complete', 
    { 
     accepts: { 
     arg: 'shopperId', type: 'string' 
     }, 
     http: { 
     path: '/complete', 
     verb: 'get' 
     }, 
     returns: { 
     arg: 'complete', 
     type: 'string' 
     } 
    } 
); 
}; 
+0

请访问使用strongloop PostgreSQL数据库视图帮助。 无法访问表 – divya

+0

我无法使用下面的代码通过在model.json中添加表来访问表。请帮忙从数据库中以同样的方式访问视图 – divya

+0

{ “名”: “测试”, “选项”:{ “idInjection”:假的, “的PostgreSQL”:{ “纲目”: “公共”, “表”: “test_data_v” } }, “属性”:{ “由assetid”:{ “类型”: “字符串”, “需要”:假, “长度”:40, “精度“:null, ”scale“:null, ”id“:1, ”postgresql“:{ ”columnName“:”asset_id“, “数据类型”: “字符改变”, “数据长度”:40, “dataPrecision”:空, “dataScale”:空, “可为空的”: “YES” } } }} – divya