在打字稿中使用 aws-sdk/lib-dynamodb getall
getall with aws-sdk/lib-dynamodb in typescript
我关于口袋妖怪的数据库有这个模式:
id: pikachu (pokemon的名字), content: Pokemon (object), height: 3
我想要获得最大高度的宠物小精灵,为此我想获得我数据库中的所有宠物小精灵,然后“减少”数组以获得最大的。
我正在使用这个 aws 库:@aws-sdk/lib-dynamodb
如何创建 QueryCommand 来获取所有值?我不需要任何 KeyConditions,但 AWS 说我必须包含它们。
new QueryCommand({
TableName: this.tableName,
}),
);
const array =
response?.Items?.map(
item =>
new PokemonDB({
pokemon: item.content,
height: item.height,
}),
) ?? [];
const max = array.reduce(function (prev, current) {
return prev.height > current.height ? prev : current;
});
return max.height;
错误是:
ValidationException: Either the KeyConditions or KeyConditionExpression parameter must be specified in the request.
DynamoDB 从根本上说是一个 key/value 数据库。所有操作都必须提供 hash/partition 键 (PK),以及可选的排序键。不提供 PK 就无法有效地查询所有项目,因为您必须求助于完整的 table 扫描才能实现。
通常,Dynamo 中的数据建模使用通常称为“单一 table 设计”的内容。所以,你可以有一个看起来像这样的 table:
PK
SK
myVal
user_123_friends
friend_456
x
user_123_friends
friend_789
y
user_456_friends
friend_123
z
在此设置中,您可以使用 PK user_123_friends
进行查询,然后说 SK 应以 friend_
开头,以列出用户 123 的所有好友,而无需求助于东西像完整 table 扫描等
因此,更一般地说,您通常最终会存储“规范化”数据,即在您的 table(s) 中以各种方式多次存储内容。您存储内容的方式完全取决于您的访问模式。
我可以推荐 Rick Houlihan 的这个演讲,以了解使用 Dynamo 进行数据建模的复杂性:) https://www.youtube.com/watch?v=HaEPXoXVf2k
我关于口袋妖怪的数据库有这个模式:
id: pikachu (pokemon的名字), content: Pokemon (object), height: 3
我想要获得最大高度的宠物小精灵,为此我想获得我数据库中的所有宠物小精灵,然后“减少”数组以获得最大的。
我正在使用这个 aws 库:@aws-sdk/lib-dynamodb
如何创建 QueryCommand 来获取所有值?我不需要任何 KeyConditions,但 AWS 说我必须包含它们。
new QueryCommand({
TableName: this.tableName,
}),
);
const array =
response?.Items?.map(
item =>
new PokemonDB({
pokemon: item.content,
height: item.height,
}),
) ?? [];
const max = array.reduce(function (prev, current) {
return prev.height > current.height ? prev : current;
});
return max.height;
错误是:
ValidationException: Either the KeyConditions or KeyConditionExpression parameter must be specified in the request.
DynamoDB 从根本上说是一个 key/value 数据库。所有操作都必须提供 hash/partition 键 (PK),以及可选的排序键。不提供 PK 就无法有效地查询所有项目,因为您必须求助于完整的 table 扫描才能实现。
通常,Dynamo 中的数据建模使用通常称为“单一 table 设计”的内容。所以,你可以有一个看起来像这样的 table:
PK | SK | myVal |
---|---|---|
user_123_friends | friend_456 | x |
user_123_friends | friend_789 | y |
user_456_friends | friend_123 | z |
在此设置中,您可以使用 PK user_123_friends
进行查询,然后说 SK 应以 friend_
开头,以列出用户 123 的所有好友,而无需求助于东西像完整 table 扫描等
因此,更一般地说,您通常最终会存储“规范化”数据,即在您的 table(s) 中以各种方式多次存储内容。您存储内容的方式完全取决于您的访问模式。
我可以推荐 Rick Houlihan 的这个演讲,以了解使用 Dynamo 进行数据建模的复杂性:) https://www.youtube.com/watch?v=HaEPXoXVf2k