DynamoDB使用NodeJS扫描嵌套属性值

时间:2019-08-15 19:21:50

标签: amazon-web-services amazon-dynamodb

我有一个内部带有嵌套值的DynamoDB。 条目如下所示: Example Entry

现在,我想扫描数据库中的所有条目以查找具有特定EpisodeGuid的所有条目。

我尝试了这段代码(以及一些变体),但始终得到0个结果。

    var params = {
        TableName: "myTableName",
        FilterExpression: "#episodeGuid = :myEpisode",
        ExpressionAttributeNames: {
            '#episodeGuid': 'attributes.playbackInfo.episodeGuid',
        },
        // ExpressionAttributeValues: { ":myEpisode": { "S": "podlove-2018-12-06t13:07:10+00:00-f8a9b2963f313e5" } }
        ExpressionAttributeValues: { ":myEpisode": "podlove-2018-12-06t13:07:10+00:00-f8a9b2963f313e5" }
    };

    oDynamoDBClient.scan(params, async function (err, data) {
        console.log('read return');
        if (err) console.log(err, err.stack); // an error occurred
        else {
            console.log(data);
        }
    });

有人可以提示我如何找到我的作品吗?

1 个答案:

答案 0 :(得分:0)

过滤器正在寻找名为attributes.playbackInfo.episodeGuid的属性,而不是嵌套的属性。

要查找嵌套属性,表达式必须包含到.

FilterExpression: "#attributes.#playbackInfo.#episodeGuid = :myEpisode",
ExpressionAttributeNames: {
  '#attributes': 'attributes',
  '#playbackInfo': 'playbackInfo',
  '#episodeGuid': 'episodeGuid',
},