2016-11-19 27 views
0

與ExpressionFilter訪問DynamoDB項目的地圖屬性值我在DynamoDB表中的下列項目:無法使用Javascript

{ 
    "quid" : { 
    "S":"87CEE4F1-5458-4A65-A3F5-1837A353B14D" 
    }, 
    "objectType" : { 
    "S":"event" 
    }, 
    "document" : { 
    "M" : { 
     "externalID" : { 
     "S" : "12-34-567890" 
     }, 
     "eventFormat" : { 
     "N" : "0" 
     } 
    } 
    } 
} 

我試圖訪問該項目與下面的JavaScript代碼

var AWS = require('aws-sdk'); 

AWS.config.update({ 
    region: "us-west-2" 
}); 
AWS.config.loadFromPath('./config.json'); 

var docClient = new AWS.DynamoDB.DocumentClient(); 

var params = { 
    TableName : "events", 
    FilterExpression : "document.eventFormat = :nForm", 
    ExpressionAttributeValues : {":nForm":{"N":"0"}} 
} 

docClient.scan(params, function(err, data){ 
    if (err) console.log(err); 
    else console.log(data); 
})  

當我刪除FilterExpression和ExpressionAttributesValues時,我能夠成功完整掃描我的表格,並查看其中包含的所有項目。當我添加FilterExpression和ExpressionAttributesValues時,我沒有得到任何結果。

任何幫助搞清楚如何通過externalID或eventFormat過濾我的掃描將不勝感激!

回答

1

請嘗試下面的params。對於標量數值,ExpressionAttributeValues不需要數據類型。這工作正如我所料。

var params = { 
     TableName: "events",  
     FilterExpression: "document.eventFormat = :nForm", 
     ExpressionAttributeValues: { 
      ":nForm": 0 
     } 
    }; 
+0

感謝notionquest!這確實是我需要的!非常感謝! –