Ind*_*dra 4 amazon-dynamodb aws-sdk
我正在使用DynamoDB作为数据库的应用程序。我有一个类似的用户表:
{
id: 1, (Primary Key)
name: "Indranil"
}
Run Code Online (Sandbox Code Playgroud)
现在我的要求是,我有一个数组,其id为:[1,5,8],并且我想使用单个查询加载所有用户。
现在,我在查询中将id用作keyConditionExpreassion,可以一次又一次地获取每个用户数据,但随后将导致多个查询。
let readparams = {
TableName : "user",
KeyConditionExpression: "# = :",
ExpressionAttributeNames:{
"#": "id"
},
ExpressionAttributeValues: {
":id":1
}
};
Run Code Online (Sandbox Code Playgroud)
然后我看到表达式中有一个'IN'操作,但是不能在KeyConditionExpression中使用,它可以在FilterExpreassion中使用,但是在filterExpression中我不能使用主键。而且,我不能仅在查询中传递过滤器表达式,我也必须传递键表达式,但就我而言,我没有任何其他条件要检查。
let readparams = {
TableName : "user",
FilterExpression: "id IN (:id1, :id2)",
ExpressionAttributeValues: {
":id1":1,
":id2":1
}
};
Run Code Online (Sandbox Code Playgroud)
所以最终我只剩下了唯一的选择,将所有数据加载到前端,然后在前端使用id过滤那些数据,但是显然这根本不是一个好的解决方案。
有人可以指出什么是最好的解决方案。
批量获取项目 API可用于通过关键属性获取多个项目。如果为表定义了排序键,则需要提供分区和排序键属性值。
一些示例代码:
var table = "phone";
var params = {
"RequestItems" : {
"phone" : {
"Keys" : [ {
"phone_num" : "+14085551212",
"Country" : "USA"
},
{
"phone_num" : "+14085551313",
"Country" : "USA"
}
]
}
}
};
docClient.batchGet(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));
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4542 次 |
| 最近记录: |