2017-03-23 70 views
3

我在node.js中編寫Lambda函數以從dynamodB中獲取項目。表是僱員,其中emo_Id是分區鍵。下面的代碼片段我寫:「在參數中缺少必需的鍵'鍵''在獲取Dynamo的操作dB

var table = "Employee_Test"; 
var emp_Id=event.emp_Id; 
var emp_Name=event.emp_Name; 
var params = { 
TableName: table, 
    KeyConditionExpression: "#eId = :Id", 
     ExpressionAttributeNames:{ 
      "#eId": "emp_Id" 
     }, 
     ExpressionAttributeValues: { 
      ":Id":emp_Id 
     }} 

我得到的錯誤是: 「消息」:「缺少必要的關鍵‘鑰匙’在PARAMS」, 「代碼」:「MissingRequiredParameter」,

我知道錯誤的解決方法是將代碼添加到: 鍵:{emp_Id:emp_Id, }。但是,如果我必須查詢在特定日期之後加入的員工,那麼我不能提供emp_Id作爲參數。

在AWS發佈說明中,我發現我們可以禁用參數驗證, https://aws.amazon.com/releasenotes/6967335344676381我試過這個,但是這也不起作用。

有人可以幫忙嗎?

感謝 Shweta

+0

您是否嘗試在全局級別(或)將服務級別的參數驗證設置爲false? –

+0

你也可以在這裏發佈你的'aws.config'嗎? –

+0

@DavidR嗨大衛,這是配置: var AWS = require('aws-sdk'); var dynamoDBConfiguration = { 「accessKeyId」:「」, \t「secretAccessKey」:「」, 「region」:「us-west-2」 }; AWS.config.update(dynamoDBConfiguration); var dynamodb = new AWS.DynamoDB({apiVersion:'2012-08-10'}); var dynamodb1 =新AWS.dynamodb({paramValidation:false}); –

回答

0

添加全局二級索引表中,以使由起始日期查找。首先,更改您的商品創建代碼(PutItem)以添加表示員工加入的月份和年份的屬性,如joinYearMonth = 201612。其次,掃描您的表以找到尚未具有此屬性的項目並添加它。第三,使用joinYearMonth分區鍵和joinTimestamp排序鍵創建全局二級索引。通過這種方式,您可以在GSI上發出查詢請求,查找需要加入的年份和月份。

2

查詢二級索引時遇到同樣的錯誤。原來我使用的是錯誤的API。在getItem和Query之間混淆。

相關問題