2016-07-06 6 views
1

私のモデルでは、リモートメソッド経由でストアドプロシージャを実行しようとしています。私は、単一のパラメータを利用するカスタムSQLを介して非常に基本的な選択を実行することができますが、複数の引数をprocに渡すエラーを回避できないようです。ここにエラーがあり、私のコードを見ています。複数のパラメータを持つループバックリモートメソッドでPostgresストアドプロシージャを実行

これを引き起こしていることについて誰もが洞察していますか?

[error: bind message supplies 1 parameters, but prepared statement "" requires 3] 
name: 'error', 
length: '130', 
'severity': 'ERROR', 
code: '08P01', 
detail: undefined, 
hint: undefined, 
position: undefined, 
... 
file: 'postgres.c', 
line: '1556', 
routine: 'exec_bind_message' } 

ScenarioAsvTarget.prepopulate = function(prepopulate, cb) { 
     var ds=ScenarioAsvTarget.dataSource; 
     var sql = "SELECT PREPOPULATE_ASV_TARGET($1,$2,$3)"; 
     ds.connector.execute(sql,[prepopulate],function(err,targets) { 
      if (err) console.error(err); 
      console.info(targets); 
      cb(err,targets); 
     });  
    }; 

ScenarioAsvTarget.remoteMethod(
'prepopulate', 
{ 
    http: {verb: 'post'}, 
    description: "Prepopulate target cloud infrastructure", 
    accepts: [ 
       {arg: 'input_scenario_id', type: 'Number'}, 
       {arg: 'input_scenario_asv_id', type: 'Number'}, 
       {arg: 'input_user_id', type:'String'} 
       ], 
    returns: {arg: 'data', type: ['string'], root: true} 
    } 
); 

答えて

0

argsを別々に渡す必要があります。

ScenarioAsvTarget.prepopulate = function(input_scenario_id, input_scenario_asv_id, input_user_id, cb) { 
    var ds = ScenarioAsvTarget.dataSource; 
    var sql = "SELECT PREPOPULATE_ASV_TARGET ($1, $2, $3)"; 
    ds.connector.execute(sql, input_scenario_id, input_scenario_asv_id, input_user_id, function(err, targets) { 
     if (err) console.error(err); 
     console.info(targets); 
     cb(err, targets); 
    });  
}; 

ScenarioAsvTarget.remoteMethod(
    'prepopulate', 
    { 
     http: {verb: 'post'}, 
     description: "Prepopulate target cloud infrastructure", 
     accepts: [ 
      {arg: 'input_scenario_id', type: 'Number'}, 
      {arg: 'input_scenario_asv_id', type: 'Number'}, 
      {arg: 'input_user_id', type:'String'} 
     ], 
     returns: {arg: 'data', type: ['string'], root: true} 
    } 
); 
関連する問題