2017-07-19 28 views
0

Here is the table structure. In posts column it is a list of strings
したがって、「contains」でfilterExpressionを使用しようとしています。 node.jsに書かれている文書は、を使用する必要があります。bはリストになります。bは私が探している文字列です。
lambda(node.js)を使用したDynamoDBクエリ

var db = new doc.DynamoDB(); 

var params = { 
    TableName: "WIT_Search", 
    KeyConditionExpression: "#type = :tag and #key between :start AND :end", 
    FilterExpression: "#tag contains :post", 
    ExpressionAttributeNames: { 
     "#type": "type", 
     "#tag": "posts", 
     "#key": "key", 
    }, 
    ExpressionAttributeValues: { 
     ":tag": "tag", 
     ":start": tag+"_", 
     ":end": tag+"_999", 
     ":post": postID 
    } 
}; 

console.log(params); 

db.query(params, function(err, data) { 
    if (err) { 
     console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); 
    } else { 
     console.log("Query succeeded."); 
     console.log('Count =',data.Items.length); 

     if (data.Items.length > 0){ 
      console.log("post exists in tag"); 
     }else{ 
      console.log("post doesnt exist in tag"); 
     } 
    } 
}); 


私はそれが私にこのメッセージを表示しますテストするんたび:

Unable to query. Error: { 
     "message": "Invalid FilterExpression: Syntax error; token: \"contains\", near: \"#tag contains (\"", 
     "code": "ValidationException", 
    } 

AWSコンソールの奇妙なことは、それだけでノードとラムダに使用して、問題なく動作します。 jsこのエラーが発生します。

答えて

0

正しい構文は次のとおりです。

FilterExpression : 'contains (#tag, :post)' 
+0

恐ろしい、ありがとう!それの良い例を見つけることができませんでした! –

関連する問題