2016-11-05 3 views
0

データベースに関する問題があります。私は現在、Gupshupボット・プログラミングに取り組んでいます。 herehereの2種類のデータ持続モードがあります。高度なデータの永続性では、次のコードは、データベースにデータを置くことdocumenetedさアドバンストデータパーシスタンスモードでテーブルを更新できません

function MessageHandler(context, event) { 
     if(event.message=='update bug - 1452') { 
     jiraUpdate(context); 
    } 
      } 
    function jiraUpdate(context){ 
     //connect to Jira and check for latest update and values 
     if(true){ 
     context.simpledb.doPut("1452" ,"{\"status\":\"QA pending\",\"lastUpdated\":\"06\/05\/2016\",\"userName\":\"John\",\"comment\":\"Dependent on builds team to provide right build\"}"); 
} else{ 
     context.sendResponse('No new updates'); 
} 
    } 
function DbPutHandler(context, event) { 
     context.sendResponse("New update in the bug, type in the bug id to see the update"); 
    } 

私はコラムの一つだけを変更したい場合(たとえば、ステータスまたは最後に更新)キー値1452を持つ行のためのテーブルで私はそれをすることができません。それはどうやってできますか? Gupshupによって提供されるホストされるDBは、AWSのDynamoDBのあるので

function MessageHandler(context, event) { 
    // var nlpToken = "xxxxxxxxxxxxxxxxxxxxxxx";//Your API.ai token 
    // context.sendResponse(JSON.stringify(event)); 
if(event.message=='deposit') { 
     context.sendResponse("Enter the amount to be deposited"); 
    } 

    if(event.message=="1000") { 
     jiraUpdate(context); 
    } 

    if(event.message== "show"){ 
context.simpledb.doGet("1452"); 

    } 
} 

function HttpResponseHandler(context, event) { 
      var dateJson = JSON.parse(event.getresp); 
      var date = dateJson.date; 
      context.sendResponse("Today's date is : "+date+":-)"); 
     } 

function jiraUpdate(context){ 
     //connect to Jira and check for latest update and values 
     if(true){ 
     context.simpledb.doPut("aaa" ,"{\"account_number\":\"90400\",\"balance\":\"5800\"}"); 
} else{ 
     context.sendResponse('No new updates'); 
} 

} 

/** Functions declared below are required **/ 
function EventHandler(context, event) { 
    if (!context.simpledb.botleveldata.numinstance) 
     context.simpledb.botleveldata.numinstance = 0; 
    numinstances = parseInt(context.simpledb.botleveldata.numinstance) + 1; 
    context.simpledb.botleveldata.numinstance = numinstances; 
    context.sendResponse("Thanks for adding me. You are:" + numinstances); 
} 



function DbGetHandler(context, event) { 
    var bugObj = JSON.parse(event.dbval); 
      var bal = bugObj.balance; 
    var acc = bugObj.account_number; 
    context.sendResponse(bal); 
    var a = parseInt (bal,10); 
    var b = a +1000; 
    var num = b.toString(); 
    context.simpledb.doPut.aaa.balance = num; 


} 

function DbPutHandler(context, event) { 
    context.sendResponse("testdbput keyword was last put by:" + event.dbval); 
} 

答えて

1

私は、次のコードを使用します。したがって、何かをキーと値のペアとして入力することができます。

したがって、あなたは、データベースにデータを格納し、のdoGet方法を使用してデータベースからデータを取得するために同じ鍵を使用するようにdoPutメソッド方法を使用しながら、右のキーを設定する必要があります。

あなたが最初に正しいデータをJSONを更新してから、最新のデータでデータベースを更新する方法doPutメソッドを呼び出して、その後のdoGetメソッドを呼び出すとすべきデータを更新します。

私もドキュメントにはないものを追加しました。これで、DB呼び出しを行い、応答の対象となる関数を選択できるようになりました。

私は3つのキーワードを使用してあなたの例をリファクタリングし、ハードだけで、たとえばいくつかのことをコーディングしています -

  1. 持っている - これは、これらの値でデータベースを更新します

    {"account_number":"90400","balance":"5800"}

  2. デポジット - このコードでは、残高に1000を加算します

  3. 表示 - このコードは、ユーザーにバランスを示しています。

コード -

function MessageHandler(context, event) { 

if(event.message=='have') { 
    var data = {"account_number":"90400","balance":"5800"}; 
     context.simpledb.doPut(event.sender,JSON.stringify(data),insertData); //using event.sender to keep the key unique 
     return; 
    } 
if(event.message=="deposit") { 
    context.simpledb.doGet(event.sender, updateData); 
    return; 
} 
if(event.message== "show"){ 
context.simpledb.doGet(event.sender); 
return; 
    } 
} 
function insertData(context){ 
    context.sendResponse("I have your data now. To update just say \"deposit\""); 
} 
function updateData(context,event){ 
    var bugObj = JSON.parse(event.dbval); 

    var bal = bugObj.balance; 
    var a = parseInt(bal,10); 
    var b = a + 1000; 
    var num = b.toString(); 
    bugObj.balance = num; 

context.simpledb.doPut(event.sender,bugObj); 
} 

function EventHandler(context, event) { 
    if (!context.simpledb.botleveldata.numinstance) 
     context.simpledb.botleveldata.numinstance = 0; 
    numinstances = parseInt(context.simpledb.botleveldata.numinstance) + 1; 
    context.simpledb.botleveldata.numinstance = numinstances; 
    context.sendResponse("Thanks for adding me. You are:" + numinstances); 
} 

function DbGetHandler(context, event) { 
    var accountObj = JSON.parse(event.dbval); 
    context.sendResponse(accountObj); 
} 

function DbPutHandler(context, event) { 
    context.sendResponse("I have updated your data. Just say \"show\" to view the data."); 
} 
関連する問題