DynamoDB扫描获取nodejs上对象的属性
DynamoDB Scan get attribute of object on nodejs
我目前正在使用以下方法获取数据库中的所有条目:
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"]
};
但是 运行 以上没有 return 任何东西。在 nodejs 上使用 DynamoDb 可以吗?
您可以使用 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 调用只是 return嵌套项目)。来自模拟 table 的示例响应如下。
GetItem succeeded: {
"Items": [
{
"SessionValue": {
"wallet": {
"keys": [
"brad001",
"brad002"
]
}
}
},
{
"SessionValue": {
"wallet": {
"keys": [
"foo001",
"foo002"
]
}
}
}
],
"Count": 2,
"ScannedCount": 2
}
我目前正在使用以下方法获取数据库中的所有条目:
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"]
};
但是 运行 以上没有 return 任何东西。在 nodejs 上使用 DynamoDb 可以吗?
您可以使用 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 调用只是 return嵌套项目)。来自模拟 table 的示例响应如下。
GetItem succeeded: {
"Items": [
{
"SessionValue": {
"wallet": {
"keys": [
"brad001",
"brad002"
]
}
}
},
{
"SessionValue": {
"wallet": {
"keys": [
"foo001",
"foo002"
]
}
}
}
],
"Count": 2,
"ScannedCount": 2
}