我目前正在使用以下命令获取数据库中的所有条目:
<div class="time-box" *ngIf="p.value.playerTimer > 0">
{{ p.value.playerTimer * 1000 | date:'mm:ss' }}
</div>
问题是我不需要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
但是,运行上面的命令不会返回任何内容。在nodejs上使用DynamoDb可以做到吗?
答案 0 :(得分:1)
您可以使用Projection Expression进行此操作。
var AWS = require('aws-sdk');
var dynamoClient = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: process.env.AWS_DYNAMODB_TABLE,
ExpressionAttributeNames: {
"#S": "SessionValue",
"#w": "wallet",
"#k": "keys",
},
Select: "SPECIFIC_ATTRIBUTES",
ProjectionExpression: "#S.#w.#k",
};
dynamoClient.scan(params, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
}
});
可能很重要的一点是要注意,响应包括完整的对象包络,因此您必须在成功回调中将其拆开(如果您希望希望Scan调用仅返回嵌套的项)。下面是来自模拟表的示例响应。
GetItem succeeded: {
"Items": [
{
"SessionValue": {
"wallet": {
"keys": [
"brad001",
"brad002"
]
}
}
},
{
"SessionValue": {
"wallet": {
"keys": [
"foo001",
"foo002"
]
}
}
}
],
"Count": 2,
"ScannedCount": 2
}