AWS DynamoDB 查询不过滤 BOOL 值
AWS DynamoDB query not filtering on BOOL value
我有一个用户 table,它是使用 GUI 创建的,并给定了电子邮件的分区密钥,它是一个字符串。然后我使用 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));
}
});
当我搜索 email = test@testing.com 时,这总是 returns 0 项,并将 deleted 保留为 false。如果我删除 deleted 的过滤器表达式,我会得到一个项目 return 那么为什么 BOOL = false 不起作用或者我应该使用其他东西?
这是过滤 BOOL
数据的代码。不需要像下面这样编码,因为 DynamoDB 将其解释为 MAP 数据类型中的 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 数据:-
我有一个用户 table,它是使用 GUI 创建的,并给定了电子邮件的分区密钥,它是一个字符串。然后我使用 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));
}
});
当我搜索 email = test@testing.com 时,这总是 returns 0 项,并将 deleted 保留为 false。如果我删除 deleted 的过滤器表达式,我会得到一个项目 return 那么为什么 BOOL = false 不起作用或者我应该使用其他东西?
这是过滤 BOOL
数据的代码。不需要像下面这样编码,因为 DynamoDB 将其解释为 MAP 数据类型中的 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 数据:-