AWS DynamoDB查询不对BOOL值进行筛选

我有一个用GUI创build的用户表,给出了电子邮件的分区键,它是一个string。 然后我用aws lambda来做一个putItem,它有:

email (string) test@testing.com deleted (BOOL) false 

这工作得很好。 然后我试图用lambda查询它使用以下参数和查询:

 var params = { TableName : 'Users', KeyConditionExpression : 'email = :email', FilterExpression : 'deleted = :deleted', ExpressionAttributeValues : { ':email' : email, ':deleted': { BOOL: false } } }; docClient.query(params, function(err, data) { if (err) return fn(err); else { console.log("GetItem succeeded:", JSON.stringify(data, null, 2)); } }); 

当我searchemail = test@testing.com并将其删除为false时,总是返回0个项目。 如果我删除删除的filterexpression式,我得到一个项目返回所以为什么不BOOL =假的工作,或者我应该使用别的东西?

以下是过滤BOOL数据的代码。 DynamoDB将其解释为MAP数据types内的BOOL值,因此不需要如下所示进行编码。

 { BOOL: false } 

改成:-

 ':deleted' : false 

码:-

 var table = "users"; var params = { TableName : table, KeyConditionExpression : 'email = :email', FilterExpression: 'deleted = :deleted', ExpressionAttributeValues : { ':email' : 'abc@gmail.com', ':deleted' : false } }; docClient.query(params, function(err, data) { if (err) { console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2)); } else { console.log("GetItem succeeded:", JSON.stringify(data, null, 2)); } }); 

我的DynamoDB有BOOL数据的项目: –

在这里输入图像说明