Amazon dynamodb DynamoDB扫描节点上对象的属性

Amazon dynamodb DynamoDB扫描节点上对象的属性,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我目前正在使用以下方法获取数据库中的所有条目: const params = { TableName: process.env.AWS_DYNAMODB_TABLE, Select: "SPECIFIC_ATTRIBUTES", AttributesToGet: ["SessionValue"]

我目前正在使用以下方法获取数据库中的所有条目:

const params = {        
  TableName: process.env.AWS_DYNAMODB_TABLE,
  Select: "SPECIFIC_ATTRIBUTES",  
  AttributesToGet: ["SessionValue"]                                                                                                                                             
};           

dynamoClient.scan(params, function(err, data) {
  console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
});
问题是我不需要SessionValue中的所有内容,它是一个非常大的对象。相反,我想做如下事情:

const params = {        
  TableName: process.env.AWS_DYNAMODB_TABLE,
  Select: "SPECIFIC_ATTRIBUTES",  
  AttributesToGet: ["SessionValue.wallet.keys"]                                                                                                                                             
};           
但是,运行上述操作不会返回任何结果。使用nodejs上的DynamoDb是否可以实现这一点?

您可以使用

var AWS=需要“AWS-sdk”; var dynamoClient=new AWS.DynamoDB.DocumentClient; 常量参数={ 表名:process.env.AWS_DYNAMODB_表, 表达式属性名称:{ S:会话值, w:钱包, k:钥匙, }, 选择:特定的属性, ProjectionExpression:S.w.k, }; dynamoClient.scanparams、functionerr、data{ 如果出错{ console.logerr,err.stack; }否则{ console.logGetItem成功:,JSON.stringifydata,null,2; } }; 可能需要注意的是,响应包含完整的对象信封,因此如果希望扫描调用仅返回嵌套项,则必须在成功回调中打开它。下面是模拟表的响应示例

GetItem succeeded: {
  "Items": [
    {
      "SessionValue": {
        "wallet": {
          "keys": [
            "brad001",
            "brad002"
          ]
        }
      }
    },
    {
      "SessionValue": {
        "wallet": {
          "keys": [
            "foo001",
            "foo002"
          ]
        }
      }
    }
  ],
  "Count": 2,
  "ScannedCount": 2
}
你可以用一只手来做这件事

var AWS=需要“AWS-sdk”; var dynamoClient=new AWS.DynamoDB.DocumentClient; 常量参数={ 表名:process.env.AWS_DYNAMODB_表, 表达式属性名称:{ S:会话值, w:钱包, k:钥匙, }, 选择:特定的属性, ProjectionExpression:S.w.k, }; dynamoClient.scanparams、functionerr、data{ 如果出错{ console.logerr,err.stack; }否则{ console.logGetItem成功:,JSON.stringifydata,null,2; } }; 可能需要注意的是,响应包含完整的对象信封,因此如果希望扫描调用仅返回嵌套项,则必须在成功回调中打开它。下面是模拟表的响应示例

GetItem succeeded: {
  "Items": [
    {
      "SessionValue": {
        "wallet": {
          "keys": [
            "brad001",
            "brad002"
          ]
        }
      }
    },
    {
      "SessionValue": {
        "wallet": {
          "keys": [
            "foo001",
            "foo002"
          ]
        }
      }
    }
  ],
  "Count": 2,
  "ScannedCount": 2
}