首页 > 解决方案 > DynamoDB:获取数组每个项目的属性

问题描述

我正在尝试使用一组主键来 BatchGetItem,但问题是 BatchGetItem 想要

Keys : [ 
 { 'username' : 'username1'} 
 { 'username' : 'username2'}
]

代替

Keys : [ 'username' : ':someUsernameArray' ]

这是我的 Lambda 函数的一部分(在 Node.js 中)

var follower_arr = Array.from(data.Item.followers.values);

var follower_params = {
    RequestItems : {
        USER : { 
            Keys :?,
            ProjectionExpression : "university.#name,full_name,username",
            "ConsistentRead": false,
            "ExpressionAttributeNames": { 
                "#name" : "name" 
             }    
        },
    }
}

docClient.batchGet(follower_params,function(err,data){
    if(err){
        callback(err,null);
    }else{
        callback(null,data);
    }
});

follower_arr 值是一个用户名数组,例如,

['jack', 'michael_is_cool', 'mark_me_but', 'brownie_mr_brown']

那么如何获取由主键组成的数组所有元素的属性呢?

标签: node.jsamazon-dynamodbdynamodb-queries

解决方案


您需要将用户名数组转换为对象数组,如下所示。在查询参数中使用结果数组。

follower_arr.forEach(function (ele) {
    keys.push({ username: ele })
}) 

var follower_params = {
    RequestItems : {
        USER : { 
            Keys :keys   
        },
    }
}

推荐阅读