gpt4 book ai didi

node.js - AWS DynamoDB 查询不过滤 BOOL 值

转载 作者:太空宇宙 更新时间:2023-11-03 22:51:40 26 4
gpt4 key购买 nike

我有一个使用 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 并将已删除的内容保留为 false 时,它​​总是返回 0 项。如果我删除删除的过滤表达式,我会得到一个项目返回,那么为什么 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 数据:-

enter image description here

关于node.js - AWS DynamoDB 查询不过滤 BOOL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40461910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com