2016-07-04 40 views
0

私はBluemixでDashdbを使用してアプリケーションを開発しています。私のPHPアプリケーションはwebserviceの呼び出しを使用して、自分の関数PHPがテーブルに挿入するノードを呼び出し、GEO_IDフィールドがnullの場合、アプリケーションが失敗し、問題を理解し、3番目のパラメータが通知されていないように見えるので、前にparamをチェックしてNULLのようなものを渡そうとしました引き続き動作しません。msg.req.queryで受け取ったnull値をmsg.payloadに渡す方法

コードを参照してください:私は以下のようにパラメータを設定している

msg.account_id = msg.req.query.account_id; 
msg.user_id = msg.req.query.user_id; 
msg.geo_id=msg.req.query.geo_id; 
msg.payload = "INSERT INTO ACCOUNT_USER (ACCOUNT_ID, USER_ID, GEO_ID) VALUES (?,?,?) "; 
return msg; 

そしてDashdbコンポーネント上を:

msg.account_id,msg.user_id,msg.geo_id 

第三geo_idが問題ですが、私は以下のコードのようなものを試してみました:

if(msg.req.query.geo_id===null){msg.geo_id=null} 

または

私が得た
if(msg.req.query.geo_id===null){msg.geo_id="null"} 

エラーは、以下のいずれかです。

dashDB query node: Error: [IBM][CLI Driver][DB2/LINUXX8664] SQL0420N Invalid character found in a character string argument of the function "DECIMAL". SQLSTATE=22018

誰かがそれで私を助けることができれば、私は本当に感謝しています。 ありがとう、 Eduardo Diogo Garcia

+0

'msg.geo_id'を未定義にしておけばどうなりますか? – hardillb

答えて

1

msg.req.query.geo_idは空の文字列に設定されていますか?

この場合、上記のステートメントは実行されず、空の文字列をDECIMAL列に挿入しようとしていません。おそらくこのようなものを試してみてください:

if (! msg.req.query.geo_id || msg.req.query.geo_id == '') { 
    msg.geo_id = null; 
} 
+0

それは働いて、ありがとう –

関連する問題