amazon-web-services - 如何在 DynamoDB 中使用 GSI 将投影属性附加到查询结果中?
问题描述
我在 DynamoDB 中有下表,它表示多对多关系。
PK | sk | message_text | external_user_id |
---|---|---|---|
mes_id_1 | 信息 | 一些讯息 | |
mes_id_2 | 信息 | 另一条消息 | |
user_notify_id_1 | mes_id_1 | ext_id_1 | |
user_notify_id_1 | mes_id_2 | ext_id_1 | |
user_notify_id_2 | mes_id_2 | ext_id_2 |
在这种情况下,一条消息可以有很多用户,而一个用户可以有很多消息。我创建了一个 GSI,调用user-pk-index
了一个分区键external_user_id
和一个排序键,pk
并在“全部”上使用了投影属性
我有一个节点项目,我正在使用AWS.DynamoDB.DocumentClient()
. 我正在尝试使用external_user_id
将返回user_notification
数据和message
数据的查询。
我期待这样的事情:
Items:[
{
"sk": "mes_id_1",
"external_user_id": "ext_id_1",
"pk": "user_notify_id_1",
"project_attr": {
"message_text": "Some message"
}
},
{
"sk": "mes_id_2",
"external_user_id": "ext_id_1",
"pk": "user_notify_id_1",
"project_attr": {
"message_text": "another message"
}
}
]
我正在尝试使用此代码:
let params = {
TableName: tableName,
IndexName: "user-pk-index",
KeyConditionExpression: "external_user_id = :external_user_id",
ExpressionAttributeValues: {
:external_user_id": "ext_id_1"
}
};
dynamodb.query(params, (err, data) => { handleFunction(err, data) });
上面的代码确实返回了对应的两行,ext_id_1
但它没有附加到message_text
(见下文)
如何将投影属性附加到上面的结果而不是下面的结果?
Items:[
{
"sk": "mes_id_1",
"external_user_id": "ext_id_1",
"pk": "user_notify_id_1"
},
{
"sk": "mes_id_2",
"external_user_id": "ext_id_1",
"pk": "user_notify_id_1"
}
]
解决方案
推荐阅读
- r - 转换后 R 管道运算符的行为
- reactjs - 如何使用 react-leaflet 显示我的搜索栏?
- python - Nonetype 对象没有 lower 属性
- azure - 同步 Azure AD 上 Windows 10 不可用的设置
- flutter - 用户已通过身份验证,但其数据未保存在 Cloud Firestore 中
- django - Spring Boot 看起来比 Django 更像样板
- python - django-simple-captcha 当 DEBUG=False 时不工作
- python - 如何限制未登录用户访问api数据
- django - 尝试使用 Django-Rest-Framework 下载 excel 文件时获取 unicode 字符作为响应
- javascript - addEventListener 在独立的 javascript 中,而不是 html 文件的一部分