gpt4 book ai didi

node.js - 不带 key 查询数据(AWS DynamoDB SDK Nodejs)

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:23 24 4
gpt4 key购买 nike

我刚刚开始使用适用于 DynamoDb 的 AWS Nodejs SDK

我对如何在不使用分区键的情况下访问特定数据感到有点困惑。

假设我的表中只有 1 个项目,其属性“id”设置为分区键

表名称:用户

{
"full_name": {
"S": "John Cena"
},
"id": {
"S": "ABC123"
},
"password": {
"S": "youcantseeme"
},
"username": {
"S": "AndHisNameIs"
}
}

如果我使用我的 key 查询,下面的代码将返回我上面的对象

顺便说一句,我正在使用dynamodb.query(params, function(err,data){}

使用Key进行搜索

let params = {
TableName : "Users",
KeyConditionExpression: "#myid = :id",
ExpressionAttributeNames:{
"#myid": "id"
},
ExpressionAttributeValues: {
":id": {
S: "ABC123"
}
}
};

无需 key 即可搜索

- 如果我可以在不指定 id 字符串的情况下访问该数据,我希望如此。例如,如果用户发送“用户名”和“密码”,我就没有 ID,因此无法查找它。

-下面的代码将返回一个错误,指出我缺少分区键“id”

let params = {
TableName : "Users",
ExpressionAttributeNames:{
"#myusername": "username"
},
KeyConditionExpression: "#myusername = :username",
ExpressionAttributeValues: {
":username": {
S: "AndHisNameIs"
}
}
};

我的解决办法?

-用用户名而不是 ID 替换分区键?这就是 nosql 数据库的工作原理吗?我来自 mysql 环境,所以我只能通过在特定列中询问来搜索特定的字符串或数字或 bool 值,哈哈

最佳答案

添加 Global Secondary Index到你想要查询的字段。或者进行全表扫描。

关于node.js - 不带 key 查询数据(AWS DynamoDB SDK Nodejs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39026851/

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