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