【问题标题】:how to access postgresql database view using strongloop如何使用strongloop访问postgresql数据库视图
【发布时间】:2016-03-06 22:10:30
【问题描述】:

请帮助使用 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"
        }
      }  
    }}

请以同样的方式建议我如何访问视图 谢谢 迪维娅

【问题讨论】:

    标签: postgresql strongloop


    【解决方案1】:

    我没有安装 postgresql 但我在 mysql 中尝试过,它工作正常。 在您的模型中,您可以直接查看此示例

    在数据库中我创建了视图

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

    在模型中你可以像这个例子一样直接调用viewname

    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'}
            }
        );
    
    
    };
    

    需要在datasource.json中设置数据源

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

    然后在 model-config.json 中你需要为每一个分配数据源名称 型号。

    那是

    {
      "_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
      }
    }
    

    然后你可以在你的 model.js 或 Rest 调用中访问数据库(例如 localhost:3000/explorer)例如我的 型号名称杂货店

    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'
          }
        }
      );
    };
    

    【讨论】:

    • 请帮助使用 strongloop 访问 postgresql 数据库视图。我能够访问表
    • 我可以通过使用以下代码在 model.json 中添加表来访问表。请帮助以相同的方式访问数据库中的视图
    • {"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”:“字符变化”,“dataLength”:40,“dataPrecision”:null,“dataScale”:null,“nullable”:“YES”}}}}
    • 主管在没有集群的情况下运行(无监督)module.js:489 throw err;
    • SyntaxError: D:\GEGDC\MD98012\DB CONNECTIN SYSTEM STATUS\hitsyss\server\common\models\iso_serverscope_view.json: 在 Object.Module._extensions 的 Object.parse (native) 中出现意外的令牌 v ..json (module.js:486:27) 在 Module.load (module.js:355:32) 在 Function.Module._load (module.js:310:12) 在 Module.require (module.js:365) :17)
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2022-01-23
    • 2022-01-25
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多