2017-08-21 9 views
0

私は電話番号を掲示してリソースを取得するためのラムダ関数を作成しています。以下は私のコードです。APIゲートウェイを使用してDynamoDBの更新リクエストを作成するのに混乱します

exports.handle = function (e, ctx, cb) { 
    var body = JSON.parse(e.body); 
    var params = { 
     TableName: 'userAddresses', 
     FilterExpression: '#phone = :phone', 
     ExpressionAttributeNames: { 
      "#phone": "phone" 
     }, 
     ExpressionAttributeValues: { 
      ":phone": body.phone 
     } 
    } 
    dynamodb.scan(params).promise().then(function (data) { 
     var uw = data.Items[0]; 
     var res = { 
      "statusCode": 200, 
      "headers": {}, 
      "body": JSON.stringify(uw) 
     }; 
     ctx.succeed(res); 
    }); 
} 

これは正常です。しかし、私はputとpatchで同じことをしたい。ある人が私を正しい方向に向けることができますか?パッチの

、それが何かのように、phoneはちょうどJSONボディに更新するqueryParameterと体として渡されるべき

おかげ

答えて

0

あるべきハッシュキーの電話番号ですか?

const AWS  = require('aws-sdk); 
const bluebird = require('bluebird'); 

AWS.config.setPromisesDependency(bluebird); 

const dynamodb = new AWS.DynamoDB.DocumentClient(); 

let update = (id, attributes) => { 
    var params = { 
    TableName: 'MyTableName', 
    Key: { 
     myHashKeyAttr: id 
    }, 
    AttributeUpdates: attributes 
    }; 

    return dynamodb.update(params).promise(); 
}; 

exports.handler = (event, context, callback) => { 
    console.log(JSON.stringify(event, null, 2)); 
    let body = JSON.parse(event.body); 

    let attributes = { 
    firstName: { 
     Action: 'PUT', 
     Value: body.firstName 
    }, 
    lastName: { 
     Action: 'PUT', 
     Value: body.lastName 
    }, 
    updatedAt: { 
     Action: 'PUT', 
     Value: new Date() 
    } 
    }; 

    // only if the phone number is a hash key... 
    update(event.queryStringParameters.phone, attributes) 
    .then(

     (result) => { 
     console.log(result); 
     callback({ 
      statusCode: 200, 
      headers: {}, 
      body: JSON.stringify({message: 'updated!'}) 
     }); 
     } 

    ).catch(

     (error) => { 
     console.error(error); 
     callback({ 
      statusCode: 500, 
      headers: {}, 
      body: JSON.stringify({message: 'ops!'}) 
     }); 
     } 

    ); 
} 
:もしそうなら、

はここで、拙速な例です... dynamodb.get()またはdynamodb.queryを()の代わりに使用し、それはあなたがDynamoDBの更新を始めるために役立つかもしれません
関連する問題