2016-07-22 11 views
3

trireme-jdbcを使用してOpengeデータベース接続を確立するためのデータレイヤーAPIを設計しました。私はcygwinを使用してtriremeコマンドでファイルを実行しているときにコードが正常に動作していますが、私は、 'a127 project start'コマンドを使用してapigeetoolを通して完全なプロジェクトを開始すると、triremeに関するいくつかのエラーを投げます。 trireme-jdbc.Belowと一緒にデータベース接続プーリング用の汎用プールパッケージを使用しましたが、私のtriremeを実行していますが、a127では実行していないファイルです。 これはapigee APIなので、フォルダ構造は完全にapigee標準であり、swaggerもここで使用されます。Apigeetoolを使用してApigeeにTriremeプロジェクトをデプロイする方法

var a127 = require('a127-magic'); 
var express = require('express'); 
var Pool = require('generic-pool').Pool; 
var jdbc = require('trireme-jdbc'); 
var app = express(); 

module.exports = app; // for testing 



// initialize a127 framework 
a127.init(function(config) { 

    // include a127 middleware 
    app.use(a127.middleware(config)); 

    var pool = new Pool(
     { 
      name : 'Suppllier Collaboration - @Anil', 
      create : function(callback) { 
       var connOpenedge = new jdbc.Database(
         { 
          url : 'jdbc:datadirect:openedge://serverhost:portno;DatabaseName=xxxxx', 
          properties : { 
           user : 'db_user', 
           password : 'db_password', 
          }, 
         }); 
       callback(null, connOpenedge); 
      }, 
      destroy : function(client) { 
       client.end(); 
      }, 
      max : 10, 
      min : 2, 
      idleTimeoutMillis : 30, 
      log : true 

     }); 

    // error handler to emit errors as a json string 
    app.use(function(err, req, res, next) { 
     console.log('we are just enter in app.js file'); 

    if (typeof err !== 'object') { 
     // If the object is not an Error, create a representation that appears to be 
     err = { 
     message: String(err) // Coerce to string 
     }; 
    } else { 
     // Ensure that err.message is enumerable (It is not by default) 
     Object.defineProperty(err, 'message', { enumerable: true }); 
    } 

    // Return a JSON representation of #/definitions/ErrorResponse 
    res.set('Content-Type', 'application/json'); 
    res.end(JSON.stringify(err)); 
    }); 

    pool.acquire(function(err, conn) { 
    if (err) { 
     throw err; 
    } else { 
     app.get("/getData", function(req, res) { 
     conn.execute('select * from "po" where "po-num" = ? and "vend-num" = ? ', 
       [4322452, 4301170 ], function(err, result, rows) { 

      if (err) 
       res.json("Sorry !Error to get data from symix...."); 

      else 
       res.json(rows); 
     }); 

    }); 
    } 
}); 


    var ip = process.env.IP || 'localhost'; 
    var port = process.env.PORT || 10010; 
    // begin listening for client requests 
    app.listen(port, ip); 
    console.log('we are inside app.js file'); 
    console.log('try this:\ncurl http://' + ip + ':' + port + '/hello?name=Scott'); 
}); 
+0

あなたは「いくつかのエラーがスローされます」と言います。あなたは実際のテキストを提供していただけますか?また、あなたが実際に存在するpo-numとvend-numを求めるとどうなりますか? (表示されたSQLはゼロ行を返すようです。) –

答えて

1

私はSQLの人ではありませんが、SQLが有効でないか、データが返されないようです。

まず、プレーンなSQLクライアントを使ってテストします。 Progressには、他に何も設定していない場合、 "sqlexp"というコマンドラインツールが同梱されています。サーバーの "proenv"ウィンドウから実行して、そのクエリがまったく機能するかどうかを確認することができます。

proenv> sqlexp -user userName -password pwd -db dbName -S port 

そして、私はあなたがSQLのように書いていることを、より良い運を持っているかもしれないと思う:

select * from "PUB.po" where "PUB.po.po-num" IS NULL and "PUB.po.vend-num" IS NULL ; 
関連する問題