我在 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"
}
]